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

如何确保Apache始终通过HTTPS为单个页面提供服务?,apache,mod-rewrite,ssl,mod-alias,Apache,Mod Rewrite,Ssl,Mod Alias,我想将所有连接从HTTP://www.example.com/abc.html重定向到HTTP://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中,但这不起作用。如果Rew

我想将所有连接从HTTP://www.example.com/abc.html重定向到HTTP://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是服务器上的真实文件(不是另一个重定向)。相应的目录指令中存在以下选项SYMLINKS


非常感谢。

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


RewriteCond后面的[OR]标志字面上是“OR”,这就是为什么最后一个条件没有它的原因

谢谢,但这仍然不能解决问题。它适用于重定向/aBc.html,但不适用于aBc.html。如果Apache在那里看到了真实的文件,那么它会将真实的文件优先于任何RewriteRule语句。有没有办法强迫它重定向,即使文件存在?再次感谢!重写确实优先于实际文件,这意味着指令可能在其当前格式的错误位置。确切地说,您在哪里尝试过这些重写(即在目录的.htaccess中,在配置的directory指令中,在配置的VirtualHost指令中)?另外,你能发布匹配的完整URL吗?同样,也可以发布不匹配的完整URL吗?好的,现在可以了。只是把它放在我的httpd.conf中就成功了。我认为问题在于我的浏览器正在缓存旧页面。谢谢你的帮助,Cez!
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]