2013-04-02 23 views
0

我們已經成功地迫使在網站的所有網頁使用WWW使用下面的代碼:的.htaccess迫使非www與單頁例外WWW

##### Redirect non-www to www -- BEGIN 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/TEST_SITE/$1 [R=301,L] 
##### Redirect non-www to www -- END 

但我們的註冊頁面是有一個例外使用不包含WWW的URL。兩天的測試和研究,我唯一能做的就是錯誤和無限循環。除了這一頁之外,有沒有人有建議強制所有的網頁去WWW?

http://mysite.com/TEST_SITE/component/users/?view=registration 

這似乎像它應該一般WWW重定向之前使用一個簡單的重定向,但我找不到在論壇上同類解決方案。我現在沒有任何想法感謝....

+0

然後你需要另一個rewritecond來匹配/排除任何註冊網址。 –

回答

0
#strip www from registration page 
RewriteCond %{HTTP_HOST} ^(www\.)(.+)$ 
RewriteCond %{QUERY_STRING} ^view=registration$ [NC] 
RewriteRule ^TEST_SITE/component/users/$ http://%2%{REQUEST_URI} [L,R=301,NC] 

# prevent adding www to registration page 
RewriteCond %{QUERY_STRING} ^view=registration$ [NC] 
RewriteRule ^TEST_SITE/component/users/$ %{REQUEST_URI} [L,NC] 

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

這看起來(對我未受教育的眼睛)就像它應該工作,但它不會將註冊頁面鏈接識別爲與需要WWW的其他頁面分開。啊! – user2236715

+0

所以你想從註冊頁面去除www?回答更新 –

+0

是的,除了註冊頁面應該有www。註冊頁面應該類似於http://mysite.com/TEST_SITE/component/users/?view=registration。 – user2236715

0

有沒有人有一個建議,迫使所有網頁WWW除了這一個http://mysite.com/TEST_SITE/component/users/?view=registration是您可以將網頁。

RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{QUERY_STRING} !view=registration 
RewriteRule ^(.*) http://www.%{HTTP_HOST}/TEST_SITE/$1 [R=301,L] 

只需添加一個新條件。

+0

像Amine的答案,這似乎應該工作,但Query_String不識別該頁面並將其轉換爲非www地址。 – user2236715

+0

如果您不願意重定向http://mysite.com/TEST_SITE/component/users/或檢查「RewriteCond/TEST_SITE /」,您可以嘗試'RewriteCond%{REQUEST_URI}!^/TEST_SITE /組件/用戶/%{QUERY_STRING}!查看=註冊「如果可能的話.. – 5ervant