强制SSL / https://使用.htaccess进行内容管理系统(CMS)

时间:2011-09-01 02:54:30

标签: .htaccess content-management-system

内容管理系统通常强制页面通过index.php路由。

例如,我使用的CMS上的页面在URL中显示如下。

http://www.my-domain.co.uk/index.php?page=263

我知道.htaccess代码只监听我的语句中的index.php部分。

我目前的重写代码如下:

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^login/?$ https://www.my-domain.co.uk/login [R=301,L]

这是一个特定目录,但

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^index.php?page=263$ https://www.my-domain.co.uk/index.php?page=263 [R=301,L]

似乎不起作用。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

  1. RewriteRule只匹配网址的path部分,因此只需^index\.php$
  2. 可以使用RewriteCond %{QUERY_STRING}匹配查询字符串。
  3. 与aesphere的答案一样,测试特殊%{HTTPS}变量比检查端口更容易。
  4. 使用绝对目标URI意味着[R=301,L],因此您可以删除它。
  5. [QSA]附加查询字符串
  6. 所以,你最终得到:

    RewriteCond %{HTTPS} off
    RewriteCond %{QUERY_STRING} ^\?page=263$
    RewriteRule ^index\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [QSA]
    

答案 1 :(得分:0)

我有一个从某个网页复制过的片段。也许你可以尝试一下?

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}