0

私の.htaccessファイルには次のルールがあります。

<ifModule mod_rewrite.c>    
    RewriteEngine On

    RewriteRule ^search/$ /search.php [QSA]

    RewriteRule ^page/([^.]+)/$ /$1? [L,R=301]  

    RewriteRule ^place/france/$ /search/?country=1&hcp=1 [QSA]
    RewriteRule ^place/canary-islands/$ /search/?country=6&hcp=1 [QSA]
    RewriteRule ^place/italy/$ /search/?country=2&hcp=1 [QSA]
    RewriteRule ^place/portugal/$ /search/?country=5&hcp=1 [QSA]
    RewriteRule ^place/spain/$ /search/?country=4&hcp=1 [QSA]
    RewriteRule ^place/united-kingdom/$ /search/?country=3&hcp=1 [QSA]

    RewriteRule ^place/([^.]+)/([^.]+)/$ /page.php?t=$1-$2&ltwo=yes [QSA]

    RewriteRule ^([^.]+)/$ /page.php?t=$1 [QSA]
</ifModule>

次のページは問題なく動作します:

www.mywebsite.com/search/
www.mywebsite.com/some-page-url/

しかし、このページは正しく動作せず、常に page.php ページにリダイレクトされます。

www.mywebsite.com/place/france/

どうすればこれを修正できますか?アドバイスしてください。

4

2 に答える 2

1

解決策は、RewriteRules に[L]or (わかりにくい短い形式にはうんざりです) タグを追加して、一致するルールがプロセスを停止するようにすることです。[last]

[NS]最後のルールがキャッチオールの場合、内部リダイレクト チェックの一致を防ぐために、または[nosubreq]タグも含める必要があります。タグを使用しても、結果は外部リダイレクトではなく内部リダイレクトになります。これは、結果の URL がすべてのルール (ここではURL)[last]でもう一度チェックされることを意味します。/search/...

于 2013-11-06T12:29:55.247 に答える