如果我的网址是:
http://mywebsite.com/lawyer/my-lawyer-profile
如何从网址中删除所有类似请求的lawyer
?
RewriteRule ^lawyer/(.+)/$ /$1
这似乎不起作用......当然,我可以访问网址http://mywebsite.com/my-lawyer-profile
,但我需要网址始终重写。
答案 0 :(得分:1)
尝试添加[R=301]
标记并删除尾部斜杠:
RewriteRule ^lawyer/(.+)$ /$1 [R=301,L]
当有人去时:
http://mywebsite.com/lawyer/my-lawyer-profile
浏览器被重定向到:
http://mywebsite.com/my-lawyer-profile
答案 1 :(得分:1)
您需要确保在命令末尾有正确的标志,以便在客户端浏览器中实际执行重写。所以像这样:
RewriteRule ^lawyer/(.*)$ /$1 [R=301,L]
此处R=301
将为浏览器(以及搜索引擎蜘蛛等)提供301 FOUND标头,指示要使用的正确URL。 L
标志将指示这是要运行的最后一条规则(即重定向现在不继续查看.htaccess文件的其余部分)。
注意我也改变了你的规则,这样/ lawyer /会重定向到/并且你不需要在URI的末尾有一个尾部斜杠(例如你可能有查询字符串的情况)
答案 2 :(得分:0)
您的模式缺少前导/
,并且仅匹配末尾带有/
的网址。你可能不希望这样。
RewriteRule ^/lawyer/(.+)$ /$1 [NE]
(NE标志可防止应用额外的%-escaping层,因为您正在写入路径部分而不是查询段。)
我需要它自动将网址从/ lawyer / my-lawyer-profile更改为/ my-lawyer-profile /
如果您说要将浏览器中显示的URL推送到更短的版本:这不是重写,那是一个普通的旧重定向。你可以使用R标志进行重定向(如上所述),但实际上没有必要让mod_rewrite的Swiss Army Chainsaw进行简单的重定向。
Redirect permanent /lawyer /