2011-01-21 115 views
11

我正在嘗試爲我的.htaccess文件編寫一個RewriteRule。特別是,無論用戶何時訪問特定的子目錄,我都希望重寫來強制HTTPS連接。.htaccess將子文件夾重定向到HTTPS

例如,只要有人訪問:http://www.mydomain.com/subdirectory(以及該「子目錄」的任何其他子目錄)。

我想它重寫https://www.mydomain.com/subdirectory

我試過以下,但它似乎創建一個循環:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.mydomain.com/subdirectory/$1 [R=301,L] 

而且,這個.htaccess文件被放置在根我的域名。

關於如何修改我的RewriteRule的任何想法?

非常感謝!

回答

18

我就要把它放到域的根目錄:

RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteRule ^(subdirectory/.*)$ https://www.mydomain.com/$1 [R=301,L] 
-1

嘗試

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://www.mydomain.com/subdirectory/$1 [R=301,L] 
1

啊,它是兩者的組合。 MonoMano - 您已經省略了RewriteRule第一部分的子目錄,因此將所有流量指向HTTPS子域地址。我發現檢查'off'比檢查!= on更可靠,不要問我爲什麼!

你會想回來添加子目錄按Floern的迴應,見下圖:

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule ^(subdirectory/.*)$ https://www.mydomain.com/subdirectory/$1 [R=301,L] 
0

使用這個,如果你不想在地址欄顯示的子文件夾。它會重定向到yourdomain.comyourdomain.com/subfolder會像你仍然對yourdomain.com

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(www.)?yourprimarydomain.com$ 
RewriteCond %{REQUEST_URI} !^/subfolder/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /subfolder/$1 
RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$ 
RewriteRule ^(/)?$ subfolder/index.php [L] 
1

添加下面給出的行爲.htaccess該子目錄的文件:

RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://www.domain.com/subdirectory/$1 [L,R=301] 
4

這項工作對我來說,這允許你要重定向到https特定的文件夾,只需在文件夾內添加一個htaccess文件,內容如下:

RewriteCond %{HTTPS} off 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]