如果我的网址是:
http://mywebsite.com/lawyer/my-lawyer-profile
lawyer
对于所有类似请求,我如何从 URL 中删除?
RewriteRule ^lawyer/(.+)/$ /$1
这似乎不起作用......当然,我可以访问网址,http://mywebsite.com/my-lawyer-profile
但我需要始终重写网址。
如果我的网址是:
http://mywebsite.com/lawyer/my-lawyer-profile
lawyer
对于所有类似请求,我如何从 URL 中删除?
RewriteRule ^lawyer/(.+)/$ /$1
这似乎不起作用......当然,我可以访问网址,http://mywebsite.com/my-lawyer-profile
但我需要始终重写网址。
尝试添加[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
将向浏览器(以及搜索引擎蜘蛛等)提供一个 301 FOUND 标头,指示要使用的正确 URL。该L
标志将表明这是要运行的最后一条规则(即现在进行重定向,不要继续查看 .htaccess 文件的其余部分)。
请注意,我也稍微更改了您的规则,这样 /lawyer/ 将重定向到 / 并且您不需要在 URI 末尾添加斜杠(例如,对于您可能有查询字符串的情况)
您的模式缺少前导,并且仅与结尾的/
URL 匹配。/
你可能不想要那个。
RewriteRule ^/lawyer/(.+)$ /$1 [NE]
(NE 标志防止应用额外的 % 转义层,因为您正在写入路径部分而不是查询段。)
我需要它自动将 url 从 /lawyer/my-lawyer-profile 更改为 /my-lawyer-profile/
如果您说要将浏览器中显示的 URL 推送到较短的版本:这不是重写,而是普通的旧重定向。您可以使用 R 标志进行重定向(如上所述),但实际上没有必要使用 mod_rewrite 的 Swiss Army Chainsaw 进行简单的重定向。
Redirect permanent /lawyer /