這是一個常見問題,對此有許多常見的答案,但是我有一個不起作用的特定小細節,閱讀文檔並不能幫助我理解原因。爲什麼RewriteRule只適用於不存在的文件?
所以,這裏是問題:我想從域名中刪除www.
。我用mod_rewrite使用.htaccess
。下面是代碼:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.swedish\-cloud\.com$
RewriteRule ^(.*)$ "http\:\/\/swedish\-cloud\.com\/$1" [R=301,L]
它的工作原理,如果我只需鍵入http://www.swedish-cloud.com
。它將其更改爲http://swedish-cloud.com
。
但如果我輸入,例如:http://www.swedish-cloud.com/index.html
,它不更改URL,以http://swedish-cloud.com/index.html
但是,如果我輸入一個不存在的文件的路徑,像http://www.swedish-cloud.com/index2.html
,它的URL更改爲http://swedish-cloud.com/index2.html
顯示404未找到錯誤。
你能讓我明白我失蹤的是什麼嗎?謝謝。
PS:我沒有對服務器的根訪問權限。
我已更改爲您建議的代碼,但仍不起作用。 http://www.swedish-cloud.com/index.html不會更改爲http://swedish-cloud.com/index.html只有當它是http://www.swedish-cloud.com/時,它纔會更改到http://swedish-cloud.com但我不說你的代碼不起作用。我在另一臺Linux服務器上嘗試了它,它工作。似乎在這個特定的服務器上通配符被禁用。 –