我有一个http://www.domain.com/index.php?p=register
这样的网址。我想重定向使用HTTPS(SSL)与.htaccess,但仅限于此,以及其他几个页面(登录页面等),但不是整个站点。 URL不指向目录,但用于动态包含不同的文件。
有人可以给我一个指针或一个如何让单个页面重定向到HTTPS的例子吗?
感谢。
答案 0 :(得分:5)
不是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())。
答案 1 :(得分:3)
这样的事情应该有效:
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]
一些解释:
答案 2 :(得分:1)
如果您可以选择遵循php方法,我建议您遵循该方法或使用任何其他动态语言。您必须避免使用htaccess,因为该页面上的图像,js和其他联系人的链接将被强制为非SSL,而现代浏览器将显示不合规标志,这可能会对您的SSL费用产生粉饰。