htaccess:删除url的一部分


htaccess: remove portion of url

如果我的URL是:http://mywebsite.com/lawyer/my-lawyer-profile

如何从URL中删除所有类似请求的lawyer

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

这似乎不起作用。。。当然,我可以作为http://mywebsite.com/my-lawyer-profile访问url,但我需要始终重写url。

尝试添加[R=301]标志并去掉尾部斜杠:

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

当有人去时,情况就是这样

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

浏览器被重定向到:

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

您需要确保在命令末尾有正确的标志,以便在客户端浏览器中实际执行重写。这样的东西:

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

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

注意,我也更改了您的规则,使得/legar/将重定向到/,并且您不需要在URI末尾使用斜杠(例如,对于可能有查询字符串的情况)

您的模式缺少前导/,并且只匹配末尾带有/的URL。你可能不想那样。

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

(NE标志防止应用额外的%-escape层,因为您正在写入路径部分而不是查询段。)

我需要它自动将url从/legars/我的律师档案更改为/my的律师档案/

如果你说你想把浏览器中显示的URL推送到较短的版本:这不是重写,而是一个简单的旧重定向。您可以使用R标志进行重定向(如上所述),但实际上不需要拿出mod_rewrite的瑞士陆军电锯进行简单的重定向。

Redirect permanent /lawyer /