我有另外一个关于mod_rewrite的问题。如果用户想要图像(.png,。jpe?g,.gif在uri结尾处),则重定向到index1.html,否则指向index2.html。测试器(http://htaccess.madewithlove.be/)与没有.png,jpe?g,.gif的uri不匹配,但是我的localhost确实存在,这就是问题所在。
Corrent示例: 输入:
localhost/image.png
输出
localhost/index1.html
输入:
localhost/image
输出
localhost/index2.html
但我的localhost确实做了什么: 输入:
localhost/image.png
输出
localhost/index2.html
输入:
localhost/image
输出
localhost/index2.html
我的htaccess:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^(.*)(.png|.jpe?g|.gif)$
RewriteRule ^(.*)$ index2.html
RewriteCond %{REQUEST_URI} ^(.*)(.png|.jpe?g|.gif)$
RewriteRule ^(.*)$ index1.html
你能帮忙吗?感谢。
答案 0 :(得分:0)
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} (?!.*?\.png|.*?\.jpe?g|.*?\.gif)^(.*?)$
RewriteRule ^(.*)$ index2.html
RewriteCond %{REQUEST_URI} (?=.*?\.png|.*?\.jpe?g|.*?\.gif)^(.*?)(.png|.jpe?g|.gif)$
RewriteRule ^(.*)$ index1.html
试试这个。为.png添加了一个lookahead.Postive,为没有.png添加了负面。
答案 1 :(得分:0)
你可笑地滥用RewriteCond
。简化为:
RewriteEngine On
RewriteBase /
RewriteRule (\.png|\.jpe?g|\.gif)$ index2.html [L,R=303]
RewriteRule !^index[12]\.html$ index1.html [L,R=303]
[L]
修饰符('Last')确保不会处理其他规则,从而无需检查第二条规则。 [R=303]
使其成为303(请参阅其他)重定向 - 如果需要,可以更改HTTP状态代码。
答案 2 :(得分:0)
这样做:
RewriteEngine On
RewriteBase /
RewriteRule \.(png|jpe?g|gif)$ index1.html [L,NC,R]
RewriteRule !^(index[12]\.html|[^.]+\.(png|jpe?g|gif))$ index2.html [L,NC,R]