mod重定向规则

时间:2012-07-03 12:01:48

标签: apache .htaccess redirect

我只是想通过mod重写ruls重定向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]

1 个答案:

答案 0 :(得分:0)

不知道你要做什么,但是如果你使用的是Apache 2.0或更高版本,当在RewriteRule内完成匹配时,前导斜杠会从URI中删除。此外,您有一条规则看起来像是在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]