我一直在墙上撞了一天试图解决这个问题。如果您知道如何做到并且可以提供帮助,那将非常感激。
我正在尝试301将所有内容从www.example.com重定向到example.com上的根域
以下工作方式可以按预期重定向www.example.com,但是对其他文件或文件夹的请求返回302.这是Wordpress Multisite安装,但此时只有一个域映射。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# BEGIN WordPress
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
# END WordPress
# Link re-directs from old website.
RewriteCond %{HTTP_HOST} ^www.example.com/(.*)$ [NC]
RewriteRule ^/?(.*)$ http://example.com$1 [R=301,L]
# Other
php_value memory_limit 500M
任何人都可以帮忙吗?拜托,谢谢你。
答案 0 :(得分:0)
您需要在所有路由规则(例如wordpress内容)之前添加重定向规则。您还缺少目标中的斜杠,而HTTP_HOST 不包含任何路径信息,只包含主机名。所以这个:
# Link re-directs from old website.
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^/?(.*)$ http://example.com/$1 [R=301,L]
需要直接位于htaccess文件最顶部的RewriteEngine On
下。