2012-07-03 111 views
0

我只是想通過mod rewrite ruls重定向URL。我已應用該規則不含(R = 301)mod重定向規則

示例: 從http:/// web應用/ WCS /商店/ servlet的/ EN/marksandspencer到http:///烯/ marksandspencer


我對mod重定向規則使用此規則。

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^(/)?$ 
RewriteCond %{REQUEST_URI} !^/webapp.*$ 
RewriteCond %{REQUEST_URI} !^/wcsstore.*$ 
RewriteRule ^/(.*)$ /webapp/wcs/stores/servlet/$1 [PT,NC,L,QSA] 
RewriteRule ^/webapp/wcs/stores/servlet/(.*) /$1 [NE,L,QSA] 
RewriteRule ^(/)?$ /webapp/wcs/stores/servlet/en/marksandspencer [PT,NC,L] 
+0

我使用這個規則國防部重定向規則。 RewriteEngine敘述上 的RewriteCond%{REQUEST_URI}!^(/)?$ 的RewriteCond%{REQUEST_URI}!^/web應用。* $ 的RewriteCond%{REQUEST_URI}!^/wcsstore。* $ 的RewriteRule^/(。*) $/webapp/wcs/stores/servlet/$ 1 [PT,NC,L,QSA] RewriteRule ^/webapp/wcs/stores/servlet /(.*)/ $ 1 [NE,L,QSA] RewriteRule^)?$/webapp/wcs/stores/servlet/en/marksandspencer [PT,NC,L] – Nishi

回答

0

不知道你想要做什麼,但如果你使用Apache 2.0或更高版本,領先的斜線被剝離的URI的時候匹配的是一款RewriteRule內完成。另外,您有一條規則,看起來像是在URI的開頭添加/webapp/wcs/stores/servlet/,接下來的規則看起來就像是要刪除它。這可能會導致循環。

在你正在嘗試做的瞎猜,我認爲你需要一個條件添加到第二個規則,並刪除前面的斜線:

# internally rewrite URI by appending "/webapp/wcs/stores/servlet/" to the front 
RewriteCond %{REQUEST_URI} !^(/)?$ 
RewriteCond %{REQUEST_URI} !^/webapp.*$ 
RewriteCond %{REQUEST_URI} !^/wcsstore.*$ 
RewriteRule ^(.*)$ /webapp/wcs/stores/servlet/$1 [PT,NC,L,QSA] 

# if a request is made with "/webapp/wcs/stores/servlet/" in it, redirect to a URI with it stripped 
RewriteCond %{THE_REQUEST} ^(GET/POST)\ /webapp/wcs/stores/servlet/ 
RewriteRule ^webapp/wcs/stores/servlet/(.*) /$1 [R=301,L,QSA] 

RewriteRule ^$ /webapp/wcs/stores/servlet/en/marksandspencer [PT,NC,L] 
+0

問題是如果我使用重定向標誌R = 301,則發佈請求不起作用。但我需要POST和GET請求。我可以這樣做嗎? RewriteRule ^/webapp/wcs/stores/servlet /(.*)/ $ 1 [R = 301,E,L,QSA] – Nishi

+0

RewriteEngine on RewriteCond%{REQUEST_URI}!^(/)?$ RewriteCond%{REQUEST_URI}! ^/webapp。* $ RewriteCond%{REQUEST_URI}!^/wcsstore。* $ RewriteRule^/(。*)$/webapp/wcs/stores/servlet/$ 1 [PT,NC,L,QSA] RewriteRule ^/webapp/wcs/stores/servlet /(.*)/ $ 1 [R,301,NE,L,QSA] RewriteRule ^(/)?$/webapp/wcs/stores/servlet/en/marksandspencer [PT,NC,L] 現在從http:/// webapp/wcs/stores/servlet/en/marksandspencer到http:/// en/marksandspencer。 如果我使用這個規則,那麼它可以很好地處理get請求,但不能和post請求一起工作。那麼我怎樣才能達到這兩個。 – Nishi

+0

你不能像這樣重定向POST請求。 –