2

RewriteRule を使用してフォルダー内の URL パラメーターを変換しようとしています。誰でも私を助けることができますか?

発信元: search.php?term=red&cat=colors 宛先: /search/red/colors

4

1 に答える 1

3

この回答の上部では、URL がどのように書き換えられリダイレクトされるかを明確にしています。「変換」の使用は明確ではありません。2 つのまったく異なることが起こり得るからです。

URL/search.php?term=red&cat=colorsをより見栄えの良いバリエーションに変更するには、実際のリクエストと照合してブラウザをリダイレクトする必要があります。

RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD)\ /search\.php\?term=([^&]+)&cat=([^&\ ]+)
RewriteRule ^ /search/%2/%3/? [L,R=301]

これにより、誰かがブラウザに URL:http://mysite.com/search.php?term=red&cat=colorsを入力すると、外部から にリダイレクトさhttp://mysite.com/search/red/colorsれ、アドレス バーの URL が変更されます。

次に、見栄えの良い URL を内部的に書き換えて、それを php スクリプトに戻すには、次のようにします。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?search/([^/]+)/([^/]+)/?$ /search.php?term=$1&cat=$2 [L]

これは逆ですが、内部的にのみ行われるため、コンテンツが から提供されている間、ブラウザのアドレス バーの URL は変更されませんsearch.php。必要に応じてどちらか一方を行うか、双方向でこれを行う必要がある場合は両方を行うことができます。

于 2012-10-22T09:36:32.543 に答える