2012-09-13 68 views
1

我想在這裏做一些非常簡單的事情,但它踢我的屁股哈哈。我有我的網站,今天早上我獲得了SSL證書。我希望我的用戶被重定向到安全網站,但我只需要證書用於我網站的某個部分,所以我不想擔心其他任何地方。證書製作爲domain.com而不是www.domain.com。我需要證書的網站部​​分,所有頁面都在apps目錄中。例如domain.com/apps/login.php。這是我一直在我的.htaccess文件中。使用.htaccess重定向時,如何測試REQUEST_URI是什麼?

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/apps/.*$ 
RewriteCond %{HTTPS} !=on 
RewriteRule ^(.*)$ https://domain\.com%{REQUEST_URI} [R=301,L] 

現在我將解釋我認爲應該做什麼,我想告訴我錯在哪裏哈哈。

  • RewriteEngin On - 允許重定向
  • RewriteCond %{REQUEST_URI} ^/apps/.*$ - 檢查用戶在應用程序目錄
  • RewriteCond %{HTTPS} !=on - 檢查用戶已經在使用https://開頭
  • RewriteRule ^(.*)$ https://domain\.com%{REQUEST_URI} [R=301,L] - 重定向

這部分工作。當我輸入www.domain.com/apps/login.php時,它重定向到https://domain.com/apps/login.php。完善。但如果我只輸入www.domain.com,它會重定向到https://domain.com。所以看起來我的線路RewriteCond %{REQUEST_URI} ^/apps/.*$壞了。我需要如何設置才能使其只在重定向到安全站點時纔在apps目錄中?

回答

1

你的規則在我看來應該可以工作,但無論如何你不需要RewriteCond %{REQUEST_URI}測試。只需在RewriteRule中包含^apps

RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteRule ^apps/(.*)$ https://domain.com/apps/$1 [R=301,L,NC] 
+0

一個問題。我如何使測試不區分大小寫? – Aust

+0

@使用'[R = 301,L,NC]'。 「NC」表示「沒有情況」。 –

+0

我沒有意識到我可以在'RewriteRule'和'RewriteCond'中加入這個標誌,謝謝。 :) – Aust

相關問題