2013-07-22 81 views
1

我已經:使用的.htaccess重定向前綴到文件夾中的.htaccess

RewriteRule ^(.*)/(.*.html)(\?.*)?$ /scripts/engine.php?path=$1/$2 [QSA,L,PT] 
RewriteRule ^(.*)/$ /scripts/engine.php?path=/$1/ [QSA,L,PT] 
RewriteRule ^$ /scripts/engine.php?path=/ [QSA,L,PT] 

我想補充的

<prefix>.<domain>.com to <prefix>.<domain>.com/<folder> 

重定向我怎麼能做到這一點,同時保持以往的規則

------謝謝回答者

謝謝 它可以在放入此訂單

RewriteCond %{HTTP_HOST} ^prefix1\.domain\.com 
RewriteCond %{REQUEST_URI} !^/edt_oracle_awr/ 
RewriteCond %{REQUEST_URI} !^/edt_mysql_slow/ 
RewriteCond %{REQUEST_URI} !^/edt_sybase_checkmep/ 
RewriteRule ^(.*)$ http://prefix2.domain.com/folder/$1 [R=301,L,QSA] 
RewriteRule ^(.*)/(.*.html)(\?.*)?$ /scripts/engine.php?path=$1/$2 [QSA,L,PT] 
RewriteRule ^(.*)/$ /scripts/engine.php?path=/$1/ [QSA,L,PT] 
RewriteRule ^$ /scripts/engine.php?path=/ [QSA,L,PT] 

如何隱藏重定向?瀏覽器將顯示prefix1.domain.com不循環

+0

你能澄清問題是什麼嗎?在mod_rewrite中有兩件事:重定向'[R]'和內部重寫(沒有'[R]')。目前發生了什麼,你想發生什麼? – Sumurai8

+0

實際上重定向瀏覽器顯示在地址欄中http://prefix2.domain.com/folder 是否有一個選項可以保留prefix1.domain.com? – Ben

+0

???什麼是原始網址。應該在地址欄中顯示的網址是什麼?應該顯示的頁面是什麼? – Sumurai8

回答

1

在mod_rewrite中有兩個概念,名爲重定向和內部重寫。

重定向

mod_rewrite的可以從重定向請求至b。這由規則後面的[R]標誌指示。如果用戶請求(例如http://foo.example.com),則可以將其重定向到http://bar.example.com。這樣做的目的是告訴客戶端該頁面已被移至http://foo.com,並且他們應該將請求重新發送到該URL。它會在地址欄中顯示http://foo.com

內部重寫

的mod_rewrite也可以內部重寫URL的,如果你想顯示的文件是在同一文件系統。這由[R]標誌的缺席表示。如果用戶請求http://foo.example.com,則假定foo.example.combar.example.com位於相同的文件系統中,您在內部將其重寫爲也可以達到http://bar.example.com的文件。這將在地址欄中顯示http://foo.example.com,但實際上會顯示http://bar.example.com也可以達到的文件。請注意,搜索引擎會相信他們是2個不同的網頁,內容完全相同,並可能會因此而懲罰您的網站。

你的情況下

在你的情況看起來像標題所暗示的被請求的內部重寫,而不是重定向。沒有文件系統的結構,我不能真正測試任何東西,但是這樣的東西應該足夠了。

RewriteRule ^path/to/subdomain1/(.*)$ path/to/subdomain2/$1 [L] 
+0

如何在URL地址中使用前綴時使errorDocument工作? – TheCrazyProfessor

+0

ErrorDocument是一個目錄上下文類型的指令,但它可能應該放在虛擬主機中。考慮問一個新的問題,你清楚地概述了你已經完成了什麼以及你想要完成什麼。 – Sumurai8