1

.htaccessファイルに次の行があります。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} ^(.*/|)(en|de|fr)(/.*|)$ [NC]
#RewriteCond %1%3.php -f
RewriteRule ^(.*/|)(en|de|fr)(/.*?)/?$ $1$3.php?lang=$2 [NC,QSA,L]

3 行目 (コメント付き) は機能しません。他のすべては問題ありません。ここで何が間違っているのか誰か教えてもらえますか? RewriteRule は非常にうまく機能します。つまり、ファイル$1$3.phpが存在し、正しく表示されます。

助けてくれてありがとう。

4

1 に答える 1

1

これは単なる限定的な推測です

正規表現の値が 3 行目に存在しません - a でキャッチされた値RewriteCond(たとえば$1$3、または例に書かれているように: %1%3) を別ので使用することはできませんRewriteCond。では値 ( $n)のみを使用できますRewriteRule

一方、3行目が必要な理由がわかりません。存在する場合にのみ書き換えを適用する必要があると言っていますが、ファイルが存在しない$1$3.php場合にアクティブになる他の書き換えルールはありますか?$1$3.php

于 2012-09-17T18:05:11.087 に答える