例:
google.com/en/game/game1.htmlは
google.com/index.php?p1=en&p2=game&p3=game1.html
である必要があり
ます。URL を分割して index.php に "/" の部分を送信するにはどうすればよいですか?
4158 次
1 に答える
6
これは、クエリパラメータが固定長の場合にのみ実現できます。それ以外の場合は別の方法がありますが、アプリケーションでパスを解析する必要があります。
固定長の実装
次のルールは、3つのURL部分すべてに一致し、それらを名前付きクエリ引数としてindex.phpに書き換えます。
RewriteRule ^([^/]+)/([^/]+)/(.+)$ index.php?p1=$1&p2=$2&p3=$3
これは書き直します:
/en/game/game1.html
に:
/index.php?p1=en&p2=game&p3=game1.html
不明な長さの実装
# Don't rewrite if file exist. This is to prevent rewriting resources like images, scripts etc
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?path=$0
これは書き直します:
/en/game/game1.html
に:
/index.php?path=en/game/game1.html
次に、アプリケーションでパスを解析できます。
編集: )URLの最初のレベルが2文字で構成されている場合にのみ書き換えルールが一致するようにするには、次のようにします。
RewriteRule ^([a-zA-Z]{2})/([^/]+)/(.+)$ index.php?p1=$1&p2=$2&p3=$3
不明な長さの実装に対しても実行できます。
RewriteRule ^[a-zA-Z]{2}/ index.php?path=$0
于 2013-03-12T12:55:14.213 に答える