2016-09-29 194 views
0

這讓我瘋狂。基本上,我想重定向如下:htaccess子域到子域/子文件夾

http://subdomain.mysite.com/(帶或不帶斜線) 到(完全一致) http://subdomain.mysite.com/subdomain/

目前這給了我一個無限循環

RewriteCond %{HTTP_HOST} ^subdomain\.mysite\.com$ [NC] 
    RewriteRule ^(.*)$ subdomain/$1 [R=301] 

但是無論規則我嘗試,它總是以循環結束,因爲目標仍然匹配重定向標準。一些幫助將不勝感激。

+0

當然,你必須添加一個條件,停止循環。 – arkascha

回答

1

您需要添加一個條件來打破無限循環。

請注意,如果您確實希望保持主機名不變,請在同一主機中重寫,但仍然按照您的建議進行外部重定向。這多少有些令人吃驚,但絕對有可能:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ [NC] 
RewriteCond %{REQUEST_URI} ^/subdomain/ [NC] 
RewriteRule ^(.*)$ subdomain/$1 [L,R=301,QSA] 

這實現了外部重定向,則需要附加條件,以防止重定向循環:

https://subdomain.example.com/foo>https://subdomain.example.com/subdomain/foo


不是如果您改寫爲另一個主機名:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ [NC] 
RewriteRule ^(.*)$ https://www.example.com/subdomain/$1 [L,R=301,QSA] 

這實現一個外部重定向,沒有附加條件是需要的,因爲現有的一個已經防止了重定向循環:

https://subdomain.example.com/foo>https://www.example.com/subdomain/foo


更經常看到的方法是隻重寫內部,所以不實際更改URL中的可見瀏覽器:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ [NC] 
RewriteCond %{REQUEST_URI} ^/subdomain/ [NC] 
RewriteRule ^(.*)$ subdomain/$1 [L,QSA] 

這實現了內部重定向,所以可見 URL在客戶端保持不變:

https://subdomain.example.com/foo> /子/富

0

似乎並沒有在工作所有。我知道它有點奇怪,但因爲遺留原因。整個服務器mysite.com是舊的,只是爲了存檔的目的 - 並要求授權訪問。除了/子域文件夾仍然需要訪問。 mysite.com和subdomain.mysite.com指向相同的主目錄(歷史原因..)

使用此設置http://subdomain.mysite.com/subdomain/完美地工作...但這裏有人真的想http://subdomain.mysite.com/工作以及

這是我目前的htaccess

<FilesMatch "index.php"> 
    AuthName "Protected Area" 
    AuthType Basic 
    AuthUserFile /home/www/.htpasswd 
    require valid-user 
</FilesMatch> 

#PIE.htc 
AddType text/x-component .htc 

RewriteEngine on 
RewriteBase/


RewriteCond %{HTTP_HOST} ^subdomain\.mysite\.com$ [NC] 
RewriteCond %{REQUEST_URI} ^/subdomain/ [NC] 
RewriteRule ^(.*)$ subdomain/$1 [L,R=301,QSA] 

#more rules here 

而且/子文件夾中,我只是說

Satisfy Any 
0

還好吧......我把它練到使用www的外部重定向工作!

RewriteCond %{HTTP_HOST} ^subdomain\.mysite\.com$ [NC] 
RewriteRule ^(.*)$ http://www.subdomain.mysite.com/subdomain/$1 [L,R=301,QSA] 

問題與此是,現在http://subdomain.mysite.com/subdomain/重定向到http://www.subdomain.mysite.com/subdomain/subdomain/ - 所以我建立一個PHP的子域/子/夾重定向... 似乎混亂,但該網站是可見的,當你打開subdomain.mysite。 COM :)

+0

當然,這是可能的,但_why_? – arkascha