0

私はApache書き換えURLの初心者です。

URL の書き換えに問題があります。

www.test.com/abc/index.php?val=123 を www.test.com/abc/123/index.php に書き換えたい

注: abc はフォルダーです

RewriteEngine on
RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond  %{REQUEST_FILENAME} !-d
RewriteRule  ^(.*)/([0-9]+)/index.php $1/index.php?val=$2 [QSA,L]
4

2 に答える 2

0

RewriteRule の正規表現は意味がありませんでした。さらに、RewriteRule でクエリ文字列の一部を参照することはできないため、追加で RewriteCond を使用してクエリ引数を取得する必要があります。

これを試してください:

RewriteEngine on
RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond  %{REQUEST_FILENAME} !-d
RewriteCond  %{QUERY_STRING} val=([0-9]+)
RewriteRule  ^(.+)/index.php $1/%1/index.php [L]

apache 自体に式のデバッグを支援してもらうことは常に良い考えです。ロギング機能を使用します。2 つのコマンドRewriteLogとのドキュメントを読んでくださいRewriteLogLevel。実行された各ステップをダンプし、アルゴリズム内で実際に何が起こっているかを理解できるようにします。

必要なすべての情報は、優れたドキュメントに記載されています。それは本当に取り組む価値があります...

于 2012-10-20T06:28:24.660 に答える
0

このルールを htaccess ファイルに記述している場合は、RewriteBaseディレクティブを追加します

RewriteEngine On
RewriteBase /
于 2012-10-20T06:28:40.320 に答える