2010-02-18 48 views
2

我想將所有連接從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指令中。

非常感謝。

回答

1

東西沿着以下的線將使您重定向非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

相關問題