2012-08-30 95 views
1

的一部分,如果我的网址是: http://mywebsite.com/lawyer/my-lawyer-profilehtaccess的:删除网址

我怎么会从URL中移除lawyer所有类似的要求?

RewriteRule ^lawyer/(.+)/$ /$1 

似乎并没有得以顺利......当然,我可以访问网址为http://mywebsite.com/my-lawyer-profile,但我需要的URL重写始终。

回答

1

尝试添加[R=301]标志,并摆脱了尾随斜杠:

RewriteRule ^lawyer/(.+)$ /$1 [R=301,L] 

这就所以当有人去:

http://mywebsite.com/lawyer/my-lawyer-profile 

浏览器被重定向到:

http://mywebsite.com/my-lawyer-profile 
+0

@dcolumbus这就是它做什么。浏览器的URL地址栏会显示“http:// mywebsite.com/my-lawyer-profile”。 –

1

您需要确保您在命令末尾具有正确的标志以激活在客户端浏览器中执行重写。因此,像这样:

RewriteRule ^lawyer/(.*)$ /$1 [R=301,L] 

这里R=301将提供指示使用适当的URL 301 FOUND头到浏览器(以及一个搜索引擎蜘蛛等)。 L标志将指示这是要运行的最后一条规则(即重定向现在不会继续查看.htaccess文件的其余部分)。

注意我也改变了你的规则,这样/ lawyer /会重定向到/并且你不需要在URI结尾处有一个尾部的斜线(例如,你可能有查询字符串的情况)

0

您的模式缺少前导/,最后只匹配/的网址。你可能不希望这样。

RewriteRule ^/lawyer/(.+)$ /$1 [NE] 

(网元标志可防止应用于%-escaping额外的一层,因为你写路部分无法查询段。)

我需要它自动改变从网址/ lawyer/my-lawyer-profile to/my-lawyer-profile/

如果您想要将浏览器中显示的URL推送到较短的版本:这不是重写,它是一个纯文本旧的重定向。你可以使用R标志来做重定向(如上所述),但是真的没有必要走出mod_rewrite的瑞士军团链锯进行简单的重定向。

Redirect permanent /lawyer/