.htaccess 301将子域和所有文件和文件夹重定向到root

时间:2014-05-09 16:35:49

标签: .htaccess mod-rewrite url-redirection wordpress

我一直在墙上撞了一天试图解决这个问题。如果您知道如何做到并且可以提供帮助,那将非常感激。

我正在尝试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

任何人都可以帮忙吗?拜托,谢谢你。

1 个答案:

答案 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下。