2012-07-03 114 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请求。 –