2014-12-03 31 views
0

我在我的htaccess文件以下規則(這是完全htaccess文件):重寫規則顯示不一致的行爲

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

使用htaccess的測試儀(http://htaccess.madewithlove.be/)它顯示不帶www的網址是否正確重定向至一個WWW網址(用mydomain.com和mydomain.com/subdirectory/進行測試)(去www.mydomain.com/subdirectory/)

現在,當我把這個htaccess文件放在我的網站上時,它會重定向mydomain .com /子目錄/到www.mydomain.com而不是www.mydomain.com/subdirectory/

它爲什麼顯示這種不一致的行爲?

回答

2

你沒有目標使用捕捉值$1

RewriteEngine on 

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

並不完全,但由於這一點,我開始思考什麼是「HTTP_HOST」其實是...我回答了我自己的問題(這很快,謝謝你的幫助)。 – 2014-12-03 11:38:58

+0

我不明白你的意思**不完全它** – anubhava 2014-12-03 11:41:06

+0

另外爲什麼你需要發佈單獨的重複答案? – anubhava 2014-12-03 11:44:46

0

所以,我擡頭一看什麼HTTP_HOST值實際上是。它看起來像它不包含任何比域名擴展(即domain.com,但沒有任何更多的東西,所以它會重定向到domain.com)

我修改了htaccess以下,這是工作:

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

如果還有人有任何建議,如何提高正則表達式的,我願意爲改善