4

変更するRewriteRuleセットアップがあります

http://kn3rdmeister.com/blog/post.php?y=2012&m=07&d=04&id=4

の中へ

http://kn3rdmeister.com/blog/2012/07/04/4.php

しかし、それは実際にはブラウザがページを取得している場所にリダイレクトします。まだ表示したい

/blog/post.php?y=xxxx&m=xx&d=xx&id=xx

しかし、ブラウザに次のような単純なURLを表示させます

/blog/post/year/month/day/id.php

ProxyPassの使用についてどこかで読んだのですが、何をしているのかよくわかりません:P

クエリ文字列を使用してpost.phpURLにアクセスするか、日付の派手なshmancyサブディレクトリを使用してクリーンURLにアクセスし、同じコンテンツを取得できるようにします。すべて、最後にクリーンURLを表示します。

4

1 に答える 1

2

あなたはこのようなものが欲しいです:

# First if someone actually requests a /blog/post.php URL, redirect them
RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD)\ /blog/post\.php\?y=([0-9]{4})&m=([0-9]{2})&d=([0-9]{2})&id=([0-9]*)\ HTTP/
RewriteRule ^blog/post\.php$ /blog/%2/%3/%4/%5.php [R=301,L]

これにより、ブラウザが/blog/##/##/##/##.phpURIにリダイレクトされ、アドレスバーに表示されます。リダイレクトされると、ブラウザはリクエストを送信し/blog/##/##/##/##.php、サーバーは内部でそれを書き直す必要があります

# We got pretty URLs, but need to rewrite back to the php request
RewriteRule ^blog/([0-9]{4})/([0-9]{2})/([0-9]{2})/([^\.]+)\.php$ /blog/post.php?y=$1&m=$2&d=$3&id=$4 [L]

これにより、すべてが内部的に戻され、ファイル/blog/post.phpがリクエストを処理できるようになります。

于 2012-07-09T20:10:30.697 に答える