2013-02-06 174 views
3

我想我最終得到了mod_rewrite的基礎知識,但我仍然有一些麻煩。Mod_rewrite重定向

我希望我的假設網站將(幾乎)所有流量導向home.html,這將解析SEO網址。這意味着/ home,/home.html,/index.html,/ something/somethingelse/gobledegook都會轉到home.html(不必擔心傳遞GET變量,主文件將在稍後解析整個URL)。

這是當前設置:

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !/something/I/want/to/preserve.html 
RewriteRule ^(.*)$ /home.html [L] 

這出色的作品。除了用作重定向:瀏覽器中的URL變爲「/home.html」。如何加載home.html頁面但保持URL相同?

+0

謝謝@Carsten用於捕獲代碼格式。我錯過了。 – RedBassett

回答

3

我想你應該嘗試用它來取代您的規則:

RewriteCond %{HTTP_HOST} =www.staging.example.com 
RewriteRule ^$ /abc-sp.html [PT,L] 

注意「空白URL路徑」現在測試的規則進行,所以不需要原來的RewriteCond。

[PT]指示mod_rewrite將輸出保留爲「URL格式」,而不是將其轉換爲文件路徑。因此,重寫的URL請求可以被mod_proxy拾取併發送到您的後端。

它不起作用,然後使用[P]標誌而不是[PT],並指定您的後端資源的URL,例如, 「http:/ /192.168.0.2:8080/abc-sp.jsp」。 [P]標誌將生成一個反向代理通道,就像你可能存在的配置文件mod_alias代碼一樣。

請注意,上面的代碼是用於.htaccess或在容器內的配置文件中使用。如果在任何容器或.htaccess外部使用,請在RewriteRule模式中添加一個前導斜槓。

希望我的回答有幫助! :〜)

1

你應該能夠簡單地P標誌添加到您的RewriteRule。請參閱:Apache mod_rewrite Manual

RewriteRule ^(.*)$ /home.html [PL] 
+0

實際上,我認爲@ Cartsen的答案是更正確的,雖然我非常確定我的工作會在w/mod_proxy開銷的時候出現。 –