1

我想让我的网站有“漂亮的网址”。我还想让输入“丑陋”网址的用户被重定向到“漂亮网址”。

简化示例:
我有 page data.php?id=123。我希望它向用户显示data/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 回答