0

htaccess で get value を php に渡すソートを実行しようとしています:

私は次のようなものを持っています:

RewriteRule ^pubs$ pubs.php RewriteRule ^pubs/beer$ pubs.php?sort=beer

上記のコードは正常に動作しています。今、私はサブページ (都市) に対して同じことをしようとしています:

RewriteRule ^pubs/(.*)$ district.php?name=$1
RewriteRule ^pubs/(.*)/beer$ district.php?name=$1&sort=beer

リンクは次のようになります:
www.domain.com/pubs/beer - 正常に動作します www.domain.com/pubs/new-york/beer - 動作し
ません

私が間違っていることは何ですか?行RewriteRule ^pubs/(.*)$ district.php?name=$1を削除すると、リンク www.domain.com/pubs/new-york/beer が機能します。私は運がない解決策を見つけるのに何時間も費やします。私は助けに感謝します。

4

1 に答える 1

1

行 RewriteRule ^pubs/(.*)$ district.php?name=$1 を削除すると、リンク www.domain.com/pubs/new-york/beer が機能します。

www.domain.com/pubs/new-york/beer は

RewriteRule ^pubs/(.*)$ district.php?name=$1

一致する代わりに、district.php?name=newyork/beer になります

RewriteRule ^pubs/(.*)/beer$ district.php?name=$1&sort=beer

これを修正できる1つの方法は次のとおりです。

RewriteRule ^pubs/([^/]*)$ district.php?name=$1

したがって、あなたの都市の後に追加のスラッシュがある場合、ルールは無視され、2 番目のルールに進みます... 必ず後に配置してください

RewriteRule ^pubs/beer$ pubs.php?sort=beer

または、district.php?name=beer のような都市名であるかのように、beer に一致します。

于 2012-05-16T19:33:12.453 に答える