301重定向所有子目录

时间:2015-07-31 23:50:04

标签: wordpress .htaccess mod-rewrite redirect http-status-code-301

我正在更改WordPress网站的域名,并希望设置如下结构:

如果用户访问 olddomain.com/page ,他将被重定向到 newdomain.com/page 等。换句话说,只有预先斜线部分域名会发生变化。我想对旧域下的所有页面执行此操作。

到目前为止,我只能将 olddomain.com 重定向到 newdomain.com ,但不能转到任何子目录(例如, olddomain.com/page 不会重定向到 newdomain.com/page )。这是我的.htaccess文件:

# BEGIN GD-SSL
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_USER_AGENT} ^(.+)$
RewriteCond %{SERVER_NAME} ^newdomain\.com$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Header add Strict-Transport-Security "max-age=300"
</IfModule>
# END GD-SSL


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

RewriteEngine On
RewriteCond %{HTTP_HOST} olddomain\.com$ [NC]
RewriteRule ^(.*)$ https://newdomain.com/$1 [L,R=301]

有谁知道我做错了什么?

2 个答案:

答案 0 :(得分:2)

您必须在路由规则之前添加所有重定向规则。 wordpress规则将所有路由到index.php,包括您想要重定向的任何内容。因此,重定向必须在任何类型的内部路由发生之前发生。

只需将重定向规则放在wordpress规则之前:

# BEGIN GD-SSL
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_USER_AGENT} ^(.+)$
RewriteCond %{SERVER_NAME} ^newdomain\.com$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Header add Strict-Transport-Security "max-age=300"
</IfModule>
# END GD-SSL

RewriteEngine On
RewriteCond %{HTTP_HOST} olddomain\.com$ [NC]
RewriteRule ^(.*)$ https://newdomain.com/$1 [L,R=301]    

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

答案 1 :(得分:0)

将.htaccess更改为旧域上的以下代码:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.olddomain.com$ [NC] 
RewriteRule ^(.*)$ http://newdomain.com/$1 [R=301,L]
</IfModule>

这将逐页重定向整个网站。