2012-12-14 122 views
0

我已經找到了如何讓我的所有網頁的從example.comwww.example.com,但我找不到任何代碼是不能工作做完全相反的。我需要從www.example.comexample.comWWW到非www重定向問題

這是我的代碼。有人可以幫我改寫它,這樣做是相反的嗎?我做的任何編輯404或無限循環。

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

----- -----編輯

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

----- EDIT 2 -----

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

Options +MultiViews 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^/(.*?)/?$ 
RewriteCond %{DOCUMENT_ROOT}/%1.php -f 
RewriteRule^/%1.php [L] 

Options +MultiViews去的原因是什麼你給我的是Options -MultiViews,它總是把我帶到「未找到,這裏是類似的文件」頁面。

回答

0

嘗試:

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

編輯:

爲了避免與mod_negotiation模塊衝突,嘗試添加該上述規則:

Options -MultiViews 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^/(.*?)/?$ 
RewriteCond %{DOCUMENT_ROOT}/%1.php -f 
RewriteRule^/%1.php [L] 
+0

好吧,這是主要工作。我遇到的問題是,使用此代碼,** www.example.com/test **正在變爲** example.com/test.php **。我想擺脫.php,有關如何做的建議?我在.htaccess中安裝的任何其他代碼似乎都不起作用。 –

+0

@RichardColeman你有其他規則嗎?如果是這樣,請確保重定向**之前**您可能有任何其他重寫規則。另外,請確保您關閉了「MultiViews」。 –

+0

沒有其他規則。截至目前,我的代碼由我編輯要添加的原始文章組成。 我假設'Options + MultiViews'是正確的選項,因爲'Options -MultiViews'實際上把我帶到了「我們找不到那個頁面,但是這裏有類似的結果」頁面。 –