基本上我正在使用htaccess 我有一个隐藏的目录,我宁愿不使用它,我想要更短的链接:
我想
http://example.com/12940.png
转到
http://example.com/_images/12940.png
这是我的规则:
RewriteRule ^([A-Za-z0-9\_\-\/]+).([A-Za-z]+)$ "_images/$1.$2"
它出了什么问题,我得到了500。
答案 0 :(得分:3)
以下是您必须做的事情:
RewriteEngine On
RewriteRule ^([a-z0-9_\-]+)\.([a-z]+)$ _images/$1.$2 [NC,L]
使用NC(不区分大小写)您不需要放置A-Za-Z,L表示最后一条规则,以防您在此之后有其他规则。
答案 1 :(得分:0)
此规则失败,因为其中包含/
。因此重定向的URL(_images/12940.png
)再次被规则捕获,并且mod_rewrite尝试将其重定向到(_images/_images/12940.png
)。
因此,您应该检查路径是否已经_images
启动:
RewriteRule ^(?!_images)([A-Za-z0-9\_\-\/]+).([A-Za-z]+)$ "_images/$1.$2"
此外,您可以进一步改善您的规则:
RewriteRule ^(?!_images)([a-z0-9_\-/]+\.[a-z]+)$ _images/$1 [NC]
无需转义_
和/
,但您应该转义.
,因为它会匹配任何字符。 NC
使规则不区分大小写,因此您不需要额外的A-Z
。