0

私は現在、次の htaccess コードを使用して、すべての php 拡張機能を削除し、「index」という単語なしで /index.php ページをロードできるようにしています。これは、.php を削除するコストです。

RewriteRule ^$ index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+[^/])$ $1.php [L]

以前はユーザーごとに新しいページを作成していましたが、お分かりのように、これはあまり良い考えではありません。したがって、すべてのユーザーページを削除し、別の方法でそれらを含めますが、要求されたページを取得パラメーターとして別のファイルに渡す必要があります。そこで、次のように、メイン レベル (/) で要求されたすべてのページを別のディレクトリ内のファイルにルーティングすることにしました。

RewriteRule ^([^/]+)$ some/page.php?requested_page=$1 [L,QSA,NC]

しかし、誰かが次のように要求した場合、/index.php ページでは機能しません: /

コードを次のように変更しました。

RewriteRule ^(<?!)([^/]+)$ some/page.php?requested_page=$1 [L,QSA,NC]

そして今、「/」リクエストは機能し、実際に存在するページはすべて機能しますが、「偽のユーザーページ」は機能しません。両方できる方法はありますか?

4

1 に答える 1

1

*の代わりに使用する正規表現を変更してみてください+:

RewriteRule ^([^/]*)$ some/page.php?requested_page=$1 [L,QSA,NC]

リクエストが空の URI であるため/(ルールが適用される前に、先頭のスラッシュが取り除かれます)。

于 2013-08-11T05:25:40.543 に答える