我只是想通过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]
答案 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]