2015-04-20 20 views
1

我试图将我的WordPress多站点根站点重定向到另一个页面,但我仍然希望能够访问/wp-admin,/wp-login/wp-json.htaccess不包括某些子目录的重定向网址

当我去浏览器时,我想url.com重定向到newurl.com除非它有上面的目录之一。

这就是我想到的,但是当我去浏览器并输入url.com它像往常一样加载页面。我哪里错了?

注意:底部的块是重定向应该发生的地方。

Options FollowSymlinks 
RewriteEngine On 
RewriteBase/

# Force SSL/HTTPS 
# Note: X-Forwarded-Proto is required for AWS's Elastic Load Balancing. 
RewriteCond %{HTTPS} !=on 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

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] 

# This is the block that should redirect, but isn't. 
RewriteCond %{HTTP_HOST} ^url\.com$ [NC] 
RewriteCond %{REQUEST_URI} !^(/wp-admin$|/wp-login$|/wp-json$) 
RewriteRule^http://newurl.com/ [R=301] 
+0

'似乎没有工作'。你可以说得更详细点吗 ?你试过的网址是什么? –

+0

我试图访问'url.com',但它只是像往常一样加载页面,我已经更新了这个问题,使它更清晰一点。 – greg

+0

它似乎对我很好。 –

回答

1

你的规则工作正常。
你没有看到它,因为它在htaccess中的位置从未达到过。

其实,你需要在default -last规则之前放置规则,否则它永远不会被执行。

Options FollowSymlinks 
RewriteEngine On 
RewriteBase/

# Force SSL/HTTPS 
# Note: X-Forwarded-Proto is required for AWS's Elastic Load Balancing. 
RewriteCond %{HTTPS} !=on 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

RewriteRule ^index\.php$ - [L] 

# add a trailing slash to /wp-admin 
RewriteRule ^wp-admin$ wp-admin/ [R=301,L] 

# This is the block that should redirect, but isn't. 
RewriteCond %{HTTP_HOST} ^url\.com$ [NC] 
RewriteCond %{REQUEST_URI} !^(/wp-admin$|/wp-login$|/wp-json$) 
RewriteRule^http://newurl.com/ [R=301] 

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] 
1

这对我来说很好。我在条件上改变了一些东西,并添加了L标志以确保在满足规则时停止。确保正在读取您的.htaccess文件。你可以验证你的apache配置文件有AllowOverride All,否则它不会读你的htaccess文件。

Options -FollowSymlinks 
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^url\.com$ [NC] 
RewriteCond %{REQUEST_URI} !^/(wp-admin|wp-login|wp-json)$ 
RewriteRule^http://newurl.com/ [R=301,L] 
+0

我假设它没有触及那些行 - .htaccess肯定是在工作 - 虽然看到我更新的问题,但我添加了其他的指示我已经在上面了(上面的工作正常。) – greg

+0

有没有多个网站?如果这是在'url.com'的doc根目录下的,你真的不需要这个条件来检查主机是否是'url.com'。也可以尝试将其放在其他规则之上。 –

+0

这是一个WordPress多站点站点,所以是的,有多个站点 - 我想让我的根站点在其他地方重定向,同时仍然可以访问它的管理页面。 – greg