2011-10-27 86 views
7

我試圖強制www。在我網站的所有頁面上。 我有wordpress安裝在我的主站點(/博客)文件夾中。在/ blog文件夾中有一個帶有以下內容的.htaccess文件:Wordpress .htaccess www。不是強制

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

在網站的主目錄中。我有一個.htaccess文件,具有以下內容:

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^www.sitename.com [NC] 
RewriteRule (.*) http://www.sitename.com/$1 [R=301,L] 
RewriteRule ^blog/index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^blog/(.*)$ /blog/index.php [L] 

在WordPress的是有選項設置爲www。 www。似乎除了在每一頁上,當我去直的site.com/blog地址

+2

_「WordPress地址」_和_「站點地址」_是否包含「設置 - >常規」下的URL中的「www.」? – Shef

+1

修正它包含www。 –

+0

嘗試用'RewriteCond%{HTTP_HOST}^sitename替換'RewriteCond%{HTTP_HOST}!^ www.sitename.com [NC]'。com [NC]' – Shef

回答

4
RewriteCond %{HTTP_HOST} !^www\.(.*) 
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L] 
7

進入設置 - >通用: 的WordPress地址(URL) 網站地址(URL)

而且兩者設置他們的www.yoursite.com(而不是yoursite.com),WordPress的自動照顧設置所有的網址www.yoursite.com就是這樣。

如果這還不夠,你不應該編輯.htaccess文件,因爲無論何時您保存或重新加載永久鏈接設置,Wordpress都會覆蓋您的.htaccess文件(某些插件也可以這樣做)。

如果你確實想重寫你的URL,你應該用WP Rewrite (Codex)來做,或者如果你想要一個更簡單的方法,那麼有一個好的插件Redirection (Wordpress.org Plugin Directory)

在重定向插件中,您可以將選項設置爲* .mydomain.com/*以301重定向到www.mydomain.com/*,並且只要您保留該插件就會照顧您的htaccess活性。

希望這有助於:)

+1

Wordpress地址和站點地址都設置爲www.site.com。我寧願不必運行一個插件。還有其他建議嗎? –

+0

爲什麼不運行插件?如果你不想運行一個插件,恐怕你唯一的選擇是嘗試從模板函數文件運行WP Rewrite(不知道這是否可行,但你可以試試)。你不能用.htaccess重寫。您可以選擇如何繼續。 正如我之前所說,我會建議插件,這是最簡單和正確的方式來做事情。你也可以寫一個你自己的插件的小小片段。 要麼寫你自己的插件(或functions.php),要麼使用一個現有的,你可能會最終使用WP重寫,「重定向」只是爲你辛苦的工作。 – Norris

+0

我不想運行插件,因爲我想知道問題出在哪裏。問題不在於我需要添加重定向,而是發生了重定向,而不應該這樣做。就像我在上面的評論中所說的,如果我訪問www.site.com/blog,它將被重定向到site.com/blog/,但如果我訪問www.site.com/blog/,則不會重定向。 –

2

在WordPress安裝(/博客/你的情況),您可以添加以下代碼上面讀取# BEGIN WordPress

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC] 
RewriteRule ^(.*)$ "http\:\/\/www\.domain\.com\/subdirectory\/$1" [R=301,L] 
</IfModule> 
## Redirect primary WordPress URL to WWW version 

顯然,該行的的.htaccess ,將「domain.com」替換爲您的實際域名,將「子目錄」替換爲安裝WordPress的子目錄的名稱。 (/博客/在OP的請求中)。

+0

我意識到這個問題已經有幾年了,但是我昨天整天都在搜索網絡,試圖找出這個確切的問題。只有在我的虛擬主機(HostDime)的幫助下,我們才能夠弄明白。最初,我認爲這是網站根目錄中.htaccess的配置,但是......原來需要額外的代碼來解決這個問題。這裏應該是一個插件,但是因爲你永遠不知道插件會被支持多久...... – flcowboy7

0

有選給你:

  1. 使用的wp-config.php文件中加入:

    定義( 'WP_HOME', 'http://www.domainname.com'); define('WP_SITEURL','http://www.domainname.com');

  2. 使用可溼性粉劑管理員

登錄到您的可溼性粉劑管理員 瀏覽到 '設置' - > '常規' 在 'WordPress的地址(URL)' 和 '網站地址(URL)'將www添加到如下所示的地址