user1480853
问问题
14909 次
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 回答