htaccess清理URL最好的方法是什么?

时间:2012-09-30 12:37:57

标签: .htaccess mod-rewrite url-rewriting clean-urls

我正在为我的网站制作干净的Url's,我注意到你在互联网上找到的内容几乎就是将你的干净网址重写为服务器可以使用的网址。所以像这样:

www.domain.com/profile/username --> www.domain.com/profile.php?u=username

RewriteEngine On
RewriteRule ^profile/(.*)$ /profile.php?u=$1 [L]

所以现在我应该在我的网站内链接到清洁。但直观地说,链接到“脏”网址感觉更加坚固/更好。因此,在这种情况下,你应该使用rewriterules来实现上述和重定向规则来重新设置干净网址的“脏网址”,这样用户只能在浏览器中看到干净的网址。

www.domain.com/profile.php?u=username --> www.domain.com/profile/username

这是一件好事吗?它是由网站完成的吗?反对/支持它的论点是什么?

你是如何做这样的重定向的?像下面这样的东西似乎不起作用:

RewriteRule ^profile\.php?u=(.*)$ /profile/$1 [R=301, L]

我对.htaccess很新,所以我可能会要求一些显而易见的东西......

1 个答案:

答案 0 :(得分:0)

RewriteRule ^profile\.php?u=(.*)$ /profile/$1 [R=301, L]

不能正常工作,因为你无法匹配来自RewriteRule的查询字符串(你的标志中也有一个迷路空间)。您还希望匹配实际请求而不是URI,因为您只是从其他规则引起重定向循环。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /profile\.php\?u=([^&\ ]+)
RewriteRule ^/?profile\.php$ /profile/%1 [R=301,L]