2010-05-20 70 views
0

我想使用mod_rewrite來隱藏生成我的XML文件的URL。重寫URL - 如何獲取主機名和路徑?

因此,如果這是請求的網址:

http://www.domain.com/path/to/頁? CID = 8001 & SRT = PO

此URL應該被執行:

的http:// www.xmldomain.com/bla/ 頁? CID = 8001 & SRT = PO &舍入類型= XSLT & XSL = http://www.domain.com/path/to/的.xsl

http://www.xmldomain.com/bla/$2?$3&rtype=xslt&xsl=http://%{HTTP_HOST}$1$2.xsl*

%{HTTP_HOST}www.domain.com
$1應該/path/to/(我該怎麼辦這個?)
$2應該page
$3應該是cid=8001&srt=po

謝謝!

回答

1

你不會確切地告訴你想匹配哪個url,所以我假設你只想匹配http://www.domain.com/path/to/page,但是把它寫成一種將規則擴展到更通用的url的方法是微不足道的。如果您需要更多的域名,也可以完成。我也不知道「隱藏」是什麼意思。如果您想要重定向而不是代理服務器,請使用R標誌替換括號內的P標誌。

#should be put in the virtual host for www.domain.com 
RewriteRule ^(/path/to/page)$ http://www.xmldomain.com/bla/page?rtype=xslt&xsl=http%3A%2F%2Fwww.domain.com$1.xsl%2A [QSA,B,P,NE] 

QSA追加cid和str參數,B轉義路徑,P代理請求,NE避免百分號的雙重編碼。

0

這裏有一點更具活力,應該做你正在尋找的東西。

RewriteRule ^(http://[-A-Za-z0-9+&@#/%=~_|!:,.;]*)/([-A-Za-z0-9+&@#/%=~_|!:,.;]*)\?([A-Za-z0-9+&@#/%=~_|!:,.;]*)$ http://www.xmldomain.com/bla/$2?$3&rtype=xslt&xsl=$1/$2.xsl 

我不知道最後想要什麼樣的選項,但我假設你想要使用重定向。

+0

這正是我正在尋找,但它不起作用在我的服務器上。該頁面無法找到。 mod_rewrite是活躍的,我已經嘗試了一些簡單的例子,它的工作。你能幫我找出問題所在嗎? – 2010-05-21 09:16:37

+0

我爲此打開了一個新線程。看到這裏:http://stackoverflow.com/questions/2880996/mod-rewrite-rewriterule-is-not-working – 2010-05-21 09:44:15