2016-07-26 42 views
0

我有一個網站在我的根.htaccess文件中使用此代碼:如何在WordPress中解決這個重定向衝突?

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

直到WordPress是後來安裝能正常工作。

我在網站的/blog部分安裝了WordPress。 /blog目錄有它自己的.htaccess

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

我相信WordPress安裝是影響我的全球阿帕奇規則。我想重定向我所有的www.mysite.com/blog/my-blog-postmysite.com/blog/my-blog-post

+0

您是否曾嘗試在虛擬主機的apache配置中添加'非www'作爲'alias',而不是'.htaccess'?你的'.htaccess'不應該是一個問題,如果你從根目錄'.htaccess'中刪除了301,那麼你就知道它不會衝突,因爲唯一的'.htaccess'將會是WP目錄中的.htaccess'。那種感覺有道理嗎?! – AshboDev

+0

apache配置設置在哪裏?我正在共享託管計劃。 –

回答

0

如果您使用Apache 2.3.10及以上,那麼你可以使用InheritBefore這樣的:

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

否則,你需要在當前www去除規則較舊版本的Apache .htaccess以及如下所示:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteOptions InheritBefore 
RewriteEngine On 
RewriteBase /blog/ 

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule^http://%1%{REQUEST_URI} [R=301,L,NE] 

RewriteRule ^index\.php$ - [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /blog/index.php [L] 

</IfModule> 
# END WordPress 
+0

它有缺陷,'www.mysite.com/blog /'重定向到'mysite.com'。但它應該重定向到'mysite.com/blog /' –

+0

你試過了這兩個選項中的哪一個。順便說一句,你的根.htaccess也應該用'www'去除規則更新,如上面在我的答案中所示。 – anubhava