0

testpage.phpページがあり、localhost/testpageからアクセスしたいとします。正規表現を機能させるための正規表現がわかりません。

以下を使用すると、サーバーエラーが発生します

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* "^[^0-9][A-z0-9_]+*.php"/$0 

ただし、正確なファイルを指定すると機能します。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* testpage.php/$0 
4

3 に答える 3

3

これを試して:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]

3行目は、エラーを回避するために、書き換えを行う前にファイルが実際に存在するかどうかを確認します

于 2013-03-25T13:17:52.943 に答える
1
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php$
RewriteRule ^(.*)$ $1.php [L]

ファイル名を.php拡張子で書き換えます

于 2013-03-25T13:19:51.393 に答える
1

置換パターンに正規表現を指定することはできません。それが失敗する理由です。この行で

RewriteRule .* "^[^0-9][A-z0-9_]+*.php"/$0 

Apacheに.*、リテラル"^[^0-9][A-z0-9_]+*.php"/に()を加えて、0番目に一致した文字列を書き換えるように指示しています(一致は$ 1から始まり、$ 2などがあるため、とにかくエラーです)。

一致をキャプチャする場合は、次のように括弧で囲む必要があります。

(.*)

そして、それは置換文字列でとして利用可能になります$1

于 2013-03-25T13:22:25.807 に答える