2012-03-09 68 views
6

我有一個問題,我需要將我網站上的4個特定頁面重定向到他們的https安全版本。htaccess將4個特定頁面重定向到https

我現在有被重定向都example.comwww.example.comhttps://example.com

Options +FollowSymlinks 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com$ [NC] 
RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule ^(.*)$ https://example.com/$1 [R] 

一個htaccess文件,我需要的是像

Options +FollowSymlinks 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page1.php$ [NC] 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page2.php$ [NC] 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page3.php$ [NC] 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page4.php$ [NC] 
RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule ^(.*)$ https://example.com/page1.php$1 [R] 
RewriteRule ^(.*)$ https://example.com/page2.php$1 [R] 
RewriteRule ^(.*)$ https://example.com/page3.php$1 [R] 
RewriteRule ^(.*)$ https://example.com/page4.php$1 [R] 

注意,我已經從刪除第三的RewriteCond線上面的代碼,因爲我不希望我的網站上的每個頁面都顯示https,而只是我特別聲明的頁面。

我怎樣才能解決這個問題呢?

PS也是,這條線是否涵蓋www.example.com和example.com?

RewriteCond %{HTTP_HOST} ^(.*\.)*example.com$ [NC] 

我假設

^(.*\.)* 

有什麼關係呢?

回答

11
Options +FollowSymlinks 
RewriteEngine On 
RewriteBase/

#redirect www.mydomain.com to mydomain.com (or any other subdomain) 
RewriteCond %{HTTP_HOST} !^mydomain.com$ [NC] 
RewriteRule ^(.*)$ http://mydomain.com/$1 [L,R=301] 

#force https for certain pages  
RewriteCond %{HTTPS} !=on 
RewriteRule ^(page1\.php|page2\.php|page3\.php|page4\.php)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R] 
+0

非常感謝Gerben,作品完美! – 2012-03-09 16:27:38

4

我修改並清理了您的代碼。你可以在你的.htaccess文件在$ DOCUMENT_ROOT使用此代碼:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

# HTTPS is not already on 
RewriteCond %{HTTPS} !=on 
# Redirect to HTTPS is URI is page1.php OR page2.php OR page3.php OR page4.php 
RewriteRule ^page[1234]\.php$ https://mydomain.com%{REQUEST_URI} [L,R] 
+0

感謝您的回覆anubhava,我沒試過你的答覆,但它看起來像TI會工作。我沒有嘗試你的第一個唯一的原因是,它似乎你正在使用某種類型的數組爲page1.php,page2.php等 這樣做的方式的問題是我不能單獨插入特定頁面名稱,例如我的頁面實際上並沒有稱爲page1,page2等。我只是爲了簡單而使用它們。 不幸的是我不知道重寫改變它。 無論如何,再次感謝您的回覆。 – 2012-03-09 16:29:28

+1

'[1234]'不是一個數組,而是正則表達式的方法來說1或2或3或4之一。我會用:'重寫規則^(page1 | page2 | page3 | page4)\。php $ https: //%{HTTP_HOST}%{REQUEST_URI} [L,R]'無論如何,我認爲你接受了正確的答案,因爲@Gerben先回答並回答正確:) – anubhava 2012-03-09 16:49:39

相關問題