簡體   English   中英

僅在具有.htaccess的特定頁面上使用HTTPS

[英]HTTPS only on specific page with .htaccess

我有一個URL,例如http://www.domain.com/index.php?p=register 我想重定向使用HTTPS(SSL)與.htaccess,但僅​​限於此,以及其他幾個頁面(登錄頁面等),但不是整個站點。 URL不指向目錄,但用於動態包含不同的文件。

有人可以給我一個指針或一個如何讓單個頁面重定向到HTTPS的例子嗎?

謝謝。

不是htaccess,但另一種方法可能是使用PHP重定向:

<?php

$redirectlist = array('register','login','myaccount');

if (in_array($_GET['p'], $redirectlist) && strtolower($_SERVER['HTTPS']) != 'on') {
    exit(header("location: https://{$_SERVER['SERVER_NAME']}{$_SERVER['REQUEST_URI']}"));
}

?>

我提到這一點的唯一原因是,在某些情況下,這可能比單獨的htaccess更容易維護。 在輸出任何文本之前,您需要在PHP內容中放置它(請參閱header() )。

這樣的事情應該有效:

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{QUERY_STRING} (^|&)p=(register|login|or|other|protected|page)($|&)
RewriteRule (.*) https://www.domain.com/index.php [R=301,QSA,L]

一些解釋:

  1. 檢查服務器端口是否與443(安全連接標准)不同,以確保我們僅重定向非安全連接
  2. 查詢字符串(后面的所有內容?)必須匹配模式:包含p變量和管道分隔列表中的一個值
  3. 將所有內容重定向到安全域,發送301響應狀態,附加所有查詢字符串和標記是最后一條規則,因此下面的任何規則都不會被解析(因為這是重定向,我們不想采取任何其他操作)

如果您可以選擇遵循php方法,我建議您遵循該方法或使用任何其他動態語言。 您必須避免使用htaccess,因為該頁面上的圖像,js和其他聯系人的鏈接將被強制為非SSL,而現代瀏覽器將顯示不合規標志,這可能看起來對您的SSL成本進行粉飾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM