htaccess:删除部分网址

时间:2012-08-30 21:13:46

标签: php .htaccess mod-rewrite rewrite

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

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

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

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

3 个答案:

答案 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 /