4
4

2 回答 2

4

这里的问题是RewriteRule ^blog/(.*)$ /services/$1 [L]内部重写了 URI,因此浏览器不知道它正在发生,这完全发生在服务器端。如果您希望浏览器实际加载不同的 URL,则需要R像在 www 重定向中一样使用该标志,尽管它只是将请求重定向到 root。如果您希望它重定向所有内容以包含“www”,您需要这样的内容:

RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

然后要将“博客”重定向到“服务”,只需添加R标志(或者R=301如果您希望重定向是永久的)。

RewriteRule ^blog/(.*)$ /services/$1 [L,R]

而且,如果出于某种原因您的内容实际上不在 /blog/中,则需要在内部将其重写

RewriteCond %{THE_REQUEST} ^GET\ /services/
RewriteRule ^services/(.*)$ /blog/$1 [L]

但这仅适用于您的内容确实位于/blog/但您只想让它看起来位于/services/.

于 2013-05-20T22:22:56.467 回答
0

实际上,在这种情况下,由于您在 Wordpress 选项中有一个特定字段来处理不同 url 的显示,因此它不能与 .htaccess 一起使用,因为 WordPress 规则在最后执行。

使用常规设置中的“站点地址(URL)”字段并输入“mysite.com/services/”会简单得多

如果您不这样做,尽管您有 .htaccess,但 WP 内部重写将使用您的安装目录

于 2014-11-09T01:07:05.417 回答