如何确保Apache始终通过HTTPS提供单个页面?

时间:2010-02-18 23:06:01

标签: apache mod-rewrite ssl mod-alias

我想将所有连接从htt_p://www.example.com/abc.html重定向到HTTP_S://www.example.com/abc.html。什么mod_alias或mod_rewrite命令可以用于此?我试过了:

RewriteEngine on
RewriteCond %{HTTPS} =off
RewriteRule $abc\.html^ https://www.example.com/abc.html [R]

在.htaccess和httpd.conf中但是不起作用。如果RewriteRule中的第一个字符串是其他任何内容(如abz.html),则它可以工作,但如果它是abc.html则不行。 abc.html是服务器上的真实文件(不是另一个重定向)。选项FollowSymlinks出现在相应的Directory指令中。

非常感谢。

1 个答案:

答案 0 :(得分:1)

以下内容将允许您将非SSL页面重定向到SSL版本(假设您在端口443上运行SSL):

RewriteEngine on

# Limited redirects
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} ^/abc\.html$ [OR,NC]
RewriteCond %{REQUEST_URI} ^/def\.html$ [OR,NC]
RewriteCond %{REQUEST_URI} ^/ghi\.html$ [NC]
RewriteRule ^/(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

RewriteCond之后的[OR]标志字面意思是“或”,这就是为什么最后一个条件没有它