1

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

lawyer对于所有类似请求,我如何从 URL 中删除?

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

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

4

3 回答 3

1

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

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

这使得当有人去:

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

浏览器被重定向到:

http://mywebsite.com/my-lawyer-profile
于 2012-08-30T21:17:30.863 回答
1

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

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

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

请注意,我也稍微更改了您的规则,这样 /lawyer/ 将重定向到 / 并且您不需要在 URI 末尾添加斜杠(例如,对于您可能有查询字符串的情况)

于 2012-08-30T21:18:18.173 回答
0

您的模式缺少前导,并且仅与结尾的/URL 匹配。/你可能不想要那个。

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

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

我需要它自动将 url 从 /lawyer/my-lawyer-profile 更改为 /my-lawyer-profile/

如果您说要将浏览器中显示的 URL 推送到较短的版本:这不是重写,而是普通的旧重定向。您可以使用 R 标志进行重定向(如上所述),但实际上没有必要使用 mod_rewrite 的 Swiss Army Chainsaw 进行简单的重定向。

Redirect permanent /lawyer /
于 2012-08-30T21:48:06.527 回答