PHP:ファイル構造に.phpファイルのないページを提供する

path php url
PHP:ファイル構造に.phpファイルのないページを提供する

クライアント用の内部CMSの構築に取り組んでいます。 各ページに新しいphpファイルを作成する代わりに、URLに基​​づいてページをロードする方法はあるが、その場所にある物理phpファイルをロードする方法があるのではないかと考えています。

したがって、www.mysite.com / new-pageにアクセスすると、テンプレート、コンテンツなどへの参照になります。 実際の.phpファイルではなく。

これを正しく説明していない場合は申し訳ありませんが、説明に苦労しています。

ありがとう。

  3  1


ベストアンサー

Front Controller patternが必要なようです。

基本的に、すべてのURLは、それをどうするかを決定する1つのPHPページにリダイレクトされます。 この.htaccessでApache mod_rewriteを使用できます。

RewriteEngine on
RewriteBase /
RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ index.php

これにより、静的コンテンツファイルを除くすべてがindex.phpにリダイレクトされます。 必要に応じて調整してください。

URL / new-pageにのみ影響を与えたい場合は、次のようにしてください:

RewriteEngine on
RewriteBase /
RewriteRule ^new-page/ myhandler.php

「new-page」で始まるURLはすべてmyhandler.phpに送信されます。

4


通常、PHPコードと組み合わせてこれを処理しているのはWebサーバーです。 したがって、たとえば、Apacheを使用している場合、mod_rewriteを使用して次のようなことができます。

RewriteEngine on
RewriteRule ^page/([^/\.]+)/?$ index.php?page=$1 [L]

そして、PHPコードで、 `$ _GET [‘page’]`をチェックして、どのページが呼び出されているかを確認できます。

したがって、「mysite.com/page/blah」にアクセスすると、実際には「index.php?page = blah」にアクセスします。

4


mod_rewriteを使用してPHPページのURLを書き換えることが解決策です。 むしろ、サーバー上に存在するディレクトリのファイルを使用しないURLを書き換える、より一般的な書き換えルールを使用します。

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

1


タイトルとURLをコピーしました