重定向到'pretty-urls'不起作用

时间:2015-02-20 08:14:17

标签: .htaccess pretty-urls

我想让我的网站有'漂亮的网址'。此外,我想让输入'丑陋'网址的用户重定向到'漂亮的网址'。

简化示例:
我有页面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]

然而,它不起作用,它进入我理解的无​​限循环。

我想要的是什么,如果是的话?

1 个答案:

答案 0 :(得分: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]