2011-07-05 99 views
2

我有2個域名:綁定域名重定向到子文件夾

  • maindomain.com
  • parkeddomain.com

具有parkeddomain.com域之前,我.htaccess是:

RewriteEngine on 

RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php [L] 

現在,我有新的領域,我想r edirect子文件夾中訪問:/park/ 所以基本上,如果下面的URI將顯示完全相同的網頁:

  • http://www.maindomain.com/park/
  • http://www.parkeddomain.com/

我嘗試以進行.htaccess規則是:

RewriteEngine on 

RewriteBase/

RewriteCond %{HTTP_HOST} ^(www.)?parkeddomain.com$ 
RewriteRule ^(.*)$ /park/$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php [L] 

但是,對於一個奇怪的原因,公園012條款RewriteRule生成內部500 error,我沒有訪問日誌文件:(

任何解決方案? 謝謝:)

回答

7

你最有可能500錯誤,因爲你的規則進入重寫循環。試試這個規則,而:

RewriteCond %{HTTP_HOST} ^(www.)?parkeddomain\.com$ [NC] 
RewriteRule ^(.*)$ http://www.maindomain.com/park/$1 [R=302,L] 
  1. 這是302重定向時間(因爲你的域名停放,有一天你可以決定真正開始使用它)。但是,如果你真的想讓它成爲301永久重定向

  2. 如果用戶通過parkeddomain.com(例如http://www.parkeddomain.com/hello)來訪問,該規則將起作用。

如果不想重定向(所以URL在瀏覽器中仍然顯示http://www.parkeddomain.com/hello代替http://www.maindomain.com/park/hello),而使用這樣的:

RewriteCond %{HTTP_HOST} ^(www.)?parkeddomain\.com$ [NC] 
RewriteCond %{REQUEST_URI} !^/park/ 
RewriteRule ^(.*)$ /park/$1 [L] 

UPDATE 此規則允許重寫甚至這種類型的URL:parkeddomain.com/park/index.php - >/park/park/index.php

RewriteCond %{HTTP_HOST} ^(www.)?parkeddomain\.com$ [NC] 
RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteCond %{DOCUMENT_ROOT}/park/$1 -f 
RewriteRule ^(.*)$ /park/$1 [L] 

請注意:因爲它使用%{ENV:REDIRECT_STATUS}可能沒有您的託管工作(這是用來檢測改寫循環,使該規則僅重寫一次)。

+0

確切的說,最後一個似乎是我需要的;我希望訪問者在2個不同的域名上思考他,沒有子文件夾..沒有重定向。現在重定向工作在公園/文件夾內的文件,但我也有文件在/ park/park /(是的,我知道,不要問...),並且他們返回500錯誤: - \ – FMaz008

+0

@ FMaz008我已經給我的答案添加了新規則,它應該允許您重寫甚至是這種情況。但請注意 - 它**可能**不適用於您的主機(舊的Apache/mod_rewrite版本也許) - 它在我的2.2.17上運行良好。 – LazyOne

+0

當重寫規則時,看起來沒有任何挑戰對你來說太難了;)。這就是我需要的,謝謝! :) – FMaz008

相關問題