2011-07-07 111 views
0

我想從你進入/sitemapHT/但似乎這個過程^(/$|!sitemapHT)是錯誤被重定向到/portal/除外,因爲它仍然重定向我/門/路徑阿帕奇:除了從重寫規則

<VirtualHost *:80> 
     DocumentRoot "/opt/tomcat-5.5.30/webapps/portal" 
     ServerName hoteles 
     ServerAlias hoteles 

     JkUnMount  /images/*.gif   w1 
     JkUnMount  /images/*.png   w1 
     JkUnMount  /images/*.jpg   w1 
     JkUnMount  /js/*.js    w1 
     JkUnMount  /styles/*.css   w1 


     JkMount   /portal     w1 
     JkMount   /portal/*    w1 


     RewriteEngine on 
     RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) 
     RewriteRule .* - [F] 
     Options +FollowSymlinks 

     RewriteRule ^(/$|!sitemapHT) /portal/ [R] 
     RewriteRule ^/(?!portal)(.*) /portal/ficha.action/$1 [PT] 

</VirtualHost> 

你能建議我一個適當的更正嗎?

謝謝!

回答

1

我希望我理解正確你:

RewriteCond $1 !^/(sitemapHT/|portal/) 
RewriteRule ^(.*) /portal/ [R,L] 

直接請求/portal/時,這會重定向(302碼)所有傳入的請求/portal/ EXCEPT /sitemapHT/或。


UPDATE:

RewriteCond $1 !^/(sitemapHT/|portal/) 
RewriteRule ^(.*) /portal/ [R,L] 
RewriteCond $1 !^(sitemapHT/|portal/) 
RewriteRule ^/(.*) /portal/ficha.action/$1 [PT] 

使用上述規則,而不是你的最後兩行:

RewriteRule ^(/$|!sitemapHT) /portal/ [R] 
RewriteRule ^/(?!portal)(.*) /portal/ficha.action/$1 [PT] 
+0

如果我們有「的RewriteCond%{REQUEST_METHOD} ^(TRACE | TRACK )' 已經?它會影響它嗎? – BoDiE2003

+0

我們目前的重寫,將所有內容重定向到/ portal /,這是正確的,但是我需要在這個重定向中使用except/sitemapHT /,這就是你寫的規則的用法? – BoDiE2003

+0

那麼這個規則是阻止不需要的請求方法,而不管實際的URL([HTTP方法定義](http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html))。重定向使用GET或POST方法。對於通用網站GET,POST和HEAD是絕對足夠的。但是,如果有人嘗試使用TRACE或TRACK方法訪問您的網站,他會看到錯誤屏幕而不是重定向。我認爲這是一個正確的行爲。 – LazyOne