Apache .htaccess-如何在某些页面上设置SSL(脚本需要修改)
我在整个网站上启用了ssl,但我需要强制所有页面(除了login.php和register.php到http:// 所以基本上我只需要login.php和register.php页面就可以使用https://protocol-ed 现在,我有一个脚本,可以使login.php页面https://加密,但我不知道如何将register.php添加到此代码中Apache .htaccess-如何在某些页面上设置SSL(脚本需要修改),apache,.htaccess,ssl,Apache,.htaccess,Ssl,我在整个网站上启用了ssl,但我需要强制所有页面(除了login.php和register.php到http:// 所以基本上我只需要login.php和register.php页面就可以使用https://protocol-ed 现在,我有一个脚本,可以使login.php页面https://加密,但我不知道如何将register.php添加到此代码中 Options +FollowSymLinks RewriteEngine On RewriteBase / # Turn SSL on
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# Turn SSL on for payments
RewriteCond %{HTTPS} off
RewriteCond %{SCRIPT_FILENAME} \/login\.php [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
# Turn SSL off everything but payments
RewriteCond %{HTTPS} on
RewriteCond %{SCRIPT_FILENAME} !\/login\.php [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
关于如何edi/使此代码将login.php和register.php页面设置为https://并将所有其他页面设置为http://的任何想法://
谢谢如果您对mod_rewrite和regex有一点熟悉,那么您在阅读这些规则时应该不会遇到任何问题——这里有一些注释解释了特定规则的作用。剩下的——正则表达式基础:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
# force https for /login.php and /register.php
RewriteCond %{HTTPS} =off
RewriteRule ^(login|register)\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# don't do anything for images/css/js (leave protocol as is)
RewriteRule \.(gif|jpe?g|png|css|js)$ - [NC,L]
# force http for all other URLs
RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI} !^/(login|register)\.php$
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
- 对
和/login.php
强制使用HTTPS/register.php
- 对图像、css样式和JavaScript文件不做任何操作(确切地说,对于具有这些扩展名的文件)
- 并将强制所有其他URL使用HTTP
/LOGIN.php
,这些规则将不起作用(Apache也不会提供这些规则,因为Linux是区分大小写的操作系统,所以这里不需要太担心)为什么要禁止SSL的任何内容?(另外,
login.php
似乎是一个用于“支付”的非正统URL。)1)你的方法是错误的(整个想法);2) 即使你在这里实现了你的要求(或者其他人为你做了这件事),你很可能在安全页面上提供图像/css/js时会遇到问题(浏览器警告)——因为你的整个方法都有缺陷;3) 你第三次问了几乎相同的问题:@LazyOne yeh I gues我提出了三个问题,我的方法有什么问题?我的意思是,它现在的工作方式是我希望它在login.php页面上的工作方式。我唯一需要的是添加register.php页面,以便两者都是https://并且网站的其余部分保持http://(由于加载时间和外部链接的原因)1)那么帐户页面呢?它们将不受保护。。但它们通常包含私人信息(地址、出生日期等——我不知道你的网站是做什么的,所以不能对此进行推测)。为什么如此重要的页面(如果存在)不应该受到HTTPS的保护?2)假设您在/login.php
页面上——根据您当前的逻辑,所有图像/css/js都应该通过HTTP提供,这是不安全的。如果你想保护页面,那么这个页面上的所有内容都应该受到保护,否则它很容易受到中间人类型的攻击(有人截取你的css/js,并在用户下载这些页面时注入错误代码——用户不会注意到任何东西)。另外,一些浏览器(例如Internet Explorer)将显示警告,而另一些浏览器将阻止非安全内容显示在安全页面上。