0

我只想通过 mod rewrite 规则重定向 URL。我已应用此规则,不包括 (R=301)

示例:从 http:///webapp/wcs/stores/servlet/en/marksandspencer 到 http:///en/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]
4

1 回答 1

0

不知道您要做什么,但是如果您使用的是 Apache 2.0 或更高版本,则在RewriteRule. 此外,您有一个看起来像是在/webapp/wcs/stores/servlet/URI 开头添加 a 的规则,然后下一个规则看起来像是您正在删除它。这可能会导致循环。

大胆猜测您要做什么,我认为您需要在第二条规则中添加一个条件,并删除前导斜杠:

# 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]
于 2012-07-03T22:23:49.133 回答