Apache-2.2

是否可以將一些查詢字元串重寫為 HTTPS 並將其他所有內容保留在 HTTP 上?

  • July 1, 2012

我正在將查詢字元串重寫為漂亮的 URI,例如:index.php?q=/en/contact成為/en/contact並且一切都很好..

# httpd.conf

# HANDLE THE QUERY
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

是否甚至可以重寫單個查詢以強制https和強制其他所有內容http?我嘗試了許多不同的方法,這些方法通常以無限循環結束。我可以在 PHP 中編寫一個外掛來執行此操作,但我認為在伺服器 conf 中處理它會更有效。我會很感激任何建議。

編輯: 為了澄清,我希望能夠將非 SSL 重寫為http://example.com/index.php?q=/en/contact啟用SSL,https://example.com/en/contact並且每個未/en/contact寫入的查詢http://example.com/...

htaccess 範例:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^en/contact$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTPS} =on
RewriteRule !^en/contact$ http://%{SERVER_NAME}%{REQUEST_URI} [L,R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

http://domain/en/contact重定向到https://domain/en/contact重寫到 index.php?q=en/contact

http://domain/en/fo重寫為 index.php?q=en/fo

https://domain/en/fo重定向到http://domain/en/fo重寫到 index.php?q=en/fo

https://domain/en/contact重寫為 index.php?q=en/contact

引用自:https://serverfault.com/questions/403872