.htaccess – 如何在某些页面上设置SSL(脚本需要修改)

我已经在整个网站上启用SSL,但我需要强制除了login.phpregister.php所有页面http://

所以基本上我只需要login.php和register.php页面https:// protocol-ed。

现在我有脚本,使login.php页面https://encryption,但我不明白如何将register.php添加到此代码

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] 
  1. 这些规则需要放置在任何其他重写规则(如果存在)之前的网站根文件夹中的.htaccess中。 如果放置在其他地方可能需要一些小的调整。

  2. 他们会的

    • /login.php/register.php强制使用HTTPS,
    • 对于图像,CSS样式和JavaScript文件(确切地说,对于具有这些扩展名的文件)
    • 并将强制所有其他URL的HTTP
  3. 您可以轻松地将其他URL添加到列表中 – 只需通过向列表中添加额外的文件名来编辑现有的规则(两个地方的相同文本:1)强制2)排除)

  4. 文件名称区分大小写。 因此,如果请求/LOGIN.php这些规则将不起作用(Apache也不会提供服务,因为Linux是区分大小写的操作系统..所以这里不需要太担心)。

  5. 明显的事情:mod_rewrite应该启用和.htaccess文件需要由Apache处理(一些网站托管公司禁用他们出于性能和安全原因)。