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

问题描述:

我想将所有连接从htt_p://www.example.com/abc.html重定向到HTTP_S://www.example.com/abc.html。什么mod_alias或mod_rewrite命令可以为此工作?我试过了:如何确保Apache始终通过HTTPS为单个页面提供服务?

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指令中。

非常感谢。

东西沿着以下的线将使您重定向非SSL页面,SSL版本(假设你是在端口443上运行SSL):在的RewriteCond后

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] 

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

+0

谢谢,但仍不能解决问题。它适用于重定向/aBc.html,但不适用于abc.html。看起来,如果Apache在那里看到真实文件,它将给出真正的文件优先于任何RewriteRule语句。即使文件存在,是否有强制重定向的方法?再次感谢! – BuyTheBid 2010-02-19 19:52:33

+0

重写确实优先于真实文件,这意味着指令可能位于当前格式的错误位置。准确地说,你是否尝试了这些重写(即在目录的.htaccess中,在配置的Directory指令中,在配置的VirtualHost指令中)?另外,你能发布完整的URL吗? – Cez 2010-02-19 20:59:53

+0

好的,现在正在工作。只要把它放在我的httpd.conf中就可以实现。我认为问题在于我的浏览器正在缓存旧页面。 感谢您的帮助,Cez! – BuyTheBid 2010-02-19 21:33:13