2013-02-07 55 views
0

我不知道有關htacess和modrewrite的大量數據,所以我發現自己處於另一個困境中,正在接近這個新的區域。htaccess ModRewrite到根目錄

我會在2個不同的問題上分開我的調查,以便讓答案成爲主題,並更好地針對尋找自己問題解決方案的用戶。

讓我先從一個應該很容易但我可能忽略的問題開始;

RewriteCond %{http_host} ^domain.com.au [nc] 
RewriteRule ^(.*)$ https://www.domain.com.au/$1 [R=301,NC] 

正如你所看到的我想要www。在URL中,我也強制使用PHP腳本使用https,但認爲只需使用它來處理兩者,以便用戶不必等待兩個轉發發生。

上面的代碼似乎工作正常,但它會把你帶到域的根。

http://domain.com/index.php?page=hello 
http://domain.com/dir/index.php?page=hello 
http://domain.com/dir17/sub/index.php?page=hello 

上述所有的URL 3將重定向到https://www.domain.com/index.php?page=hello

顯然是與modrewrite的目錄深度的事,但我不知道如何確保本地它適用於每一個目錄,而不是直接回到根部。

我一如既往地感謝您的幫助,驚人的一羣人本網站:)上

+0

嗯,你在這裏顯示的是表示你可能有一些其他的重寫規則干擾這個。您提供的規則應該與您期望的完全相同。請在您的目錄中查找其他.htaccess文件,並確保您在上面發佈的規則位於_root_目錄的.htaccess中。 –

+0

我目前使用它在一個隱藏的子目錄中進行測試,因爲這部分網站尚未上線,它位於THAT目錄的根目錄中,但不在網站根目錄。這是否與這個規則在這個場景中有所不同? – Tarquin

+0

除了你的回答,我把所說的規則放在根目錄下,它只是引起怪異的401錯誤,好像它只是在和我搞砸: – Tarquin

回答

0

這是一個有點晚,但意識到它從來沒有一個答案公佈。不過,經過大量研究,我確實解決了這個問題。

RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

我當然希望這可以幫助別人。