2

私はPHPとApacheの初心者です。次の URI を持つことができる自分の Web サイトに URL 書き換えを使用しようとしています。

1. http://localhost:8080/home
2. http://localhost:8080/dell

最初の URI には、利用可能なhome.phpファイルがあり、次の書き換えルールで .htaccess ファイルを編集しました。

RewriteRule ^([^\.]+)$ $1.php [NC]

2 番目の URI は動的です。これは、要求を処理できるdell.phpが利用できないことを意味します。そこで、RewriteCond のように書きました。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ list.php?page=$1

全体として、私の .htaccess ファイルは

Options +FollowSymLinks
RewriteEngine on

RewriteRule ^([^\.]+)$ $1.php [NC] [N]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ list.php?page=$1

したがって、localhost:8080/homeをリクエストすると、 home.php は適切に応答されますが、localhost:8080/dellをリクエストすると、エラーが応答されます

「要求された URL /dell.php は、このサーバーで見つかりませんでした。」

最初の RewriteRule のみが優先され、2 番目の RewriteRule は Apache サーバーによって読み取られないと思います。順序の変更も機能しません。ここでの私の質問は、PHP ファイルが存在する場合と存在しない場合の両方で機能する RewriteRule を使用する必要があることです。

ご意見、ご指導をよろしくお願いいたします。

リテッシュ

4

1 に答える 1

1

書き換える前に%{REQUEST_FILENAME}.php が存在するかどうかを確認するために、.phpに対してプリエンプティブ チェックを行う必要があります。そうしないと、 dellのような URIが盲目的に書き換えられます。

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^\.]+)$ $1.php [L]
于 2012-08-10T08:29:08.507 に答える