1

Web サイトに「pretty-url」を追加したいと考えています。また、「醜い」URL を入力したユーザーが「pretty-urls」にリダイレクトされるようにしたいと考えています。

簡単な例:
page がありますdata.php?id=123data/123アドレスバーに入力したユーザーが誰のためdata.php?id=123にリダイレクトされるかをユーザーに示すようにしたいdata/123.

で次のコードを試しました.htaccess

# redirect to pretty url
RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
RewriteRule ^/?data\.php data/%1? [R=301,L]

# convert pretty url to normal
RewriteRule ^/?data/([0-9]+)$ data.php?id=$1 [L]

しかし、それは機能しません。私が理解したように、無限ループに入ります。

私が望んでいたことは可能ですか?

4

1 に答える 1

2

あなたの場合に使用%{QUERY_STRING}すると、内部の宛先もそれに依存しているため、無限ループが生成されます。

ただし、使用しても次のこと%{THE_REQUEST}はできません。

# Redirect /data.php?id=123 to /data/123
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+data\.php\?id=([0-9]+) [NC]
RewriteRule ^ /data/%1? [R=302,L]

# Internally forward /data/123 to /data.php?id=123
RewriteRule ^data/([0-9]+)/?$ /data.php?id=$1 [NC,L]
于 2015-02-20T08:21:24.233 に答える