誰かhttp://holtplantandmachinery.co.uk/category.php?name=wheel-loaders
がブラウザーの URL アドレス バーに入力すると、holtplantandmachinery.co.ukサーバーに送信される要求は次のようになります。
GET /category.php?name=wheel-loaders HTTP/1.1
Host: holtplantandmachinery
some other headers
etc
var を使用%{THE_REQUEST}
して、最初の行と照合できます。
RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD)\ category\.php\?name=([^&\ ]+)
RewriteRule ^ /cat/%2? [L,R=301]
これにより、リクエストがリダイレクトされhttp://holtplantandmachinery.co.uk/cat/wheel-loaders
、その URL がブラウザの URL アドレス バーに表示されます。%{THE_REQUEST}
の代わりに使用する理由%{QUERY_STRING}
は、見栄えの良い URL をクエリ文字列のある URL に書き換える他のルールが表示され、%{QUERY_STRING}
一致すると、ルールが適用されてリダイレクト ループが発生するためです。または、クエリ文字列と照合して、次を使用することもできます。
RewriteCond %{ENV:REDIRECT_STATUS} !200
URI が以前に書き換えられた内部リダイレクトからのものではないことを確認するため。
次に、内部書き換えルールがあります。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?cat/(.*)$ /category.php?name=$1 [L]