2012-09-30 55 views
2

我正在为我的网站工作,干净的网址,我注意到,你在互联网上找到的几乎是重写你的干净网址到你的服务器可以使用的网址。因此,像这样:htaccess干净的URL的最佳方式是什么?

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

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

所以,现在有了这个,我要我的网站中链接到cleanurl的。但直观地感觉,链接到“脏”网址会更加坚固/更好。因此,在这种情况下,您应该使用重写规则来实现上述AND重定向规则,以将“脏网址”重新设置为干净的网址,因此用户始终只能在浏览器中看到干净的网址。

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

这是一件很好的事情。它是由网站完成的吗?什么是反对/赞成它的论据?

你怎么做这样的重定向。像下面的内容似乎不工作:

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

我是相当新的htaccess的,所以我可能会问的东西,这是显而易见的......

回答

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] 
+0

Oké,谢谢。但重写网址并像这样双重重定向网址是一个好主意吗? – Juvlius

+1

@Juvlius你这样做,所以你无法控制的链接指向友好的。您在内容**中生成的链接必须是友好的。你希望所有暴露给互联网的URL都是友好的。您希望重定向的唯一原因是指出任何不受您控制的旧链接(如Google索引漫游器) –