我希望能够重写这段代码
http://localhost/.../identicon/f528764d624db129b32c21fbca0cb8d6.png至
http://localhost/.../identicon.php?hash=f528764d624db129b32c21fbca0cb8d6因此,我将其添加到/.../.htaccess中,就是这样:
RewriteEngine On
RewriteRule ^resource/ - [L]
RewriteRule ^identicon/(.+)\.png$ identicon.php?hash=$1 [QSA,L]
RewriteRule ^(.*)$ index.php?t=$1 [QSA,L]由于某种原因,它不能工作,因为它将它重定向到index.php?t=identicon.php;即使设置了L标志!为什么?
发布于 2010-01-19 16:17:58
在最后一个规则中添加一个条件,以排除可以映射到现有文件的请求:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?t=$1 [QSA,L]这是必要的,因为 flag会生成一个内部重定向,并将新的URL作为请求URL:
但是请记住,如果
RewriteRule生成内部重定向(在每个目录上下文中重写时经常发生这种情况),这将重新注入请求,并导致从第一个RewriteRule开始重复处理。
发布于 2010-01-19 11:59:18
(答案不正确,留作参考)
我刚刚弄清楚了可能是什么问题--这是一个困扰了我很长时间的问题。
根据您的服务器设置,它很可能会将identicon/xxx.png解释为对identicon.php/xxx.png的请求,假设PHP扩展就是您想要的。尝试使用/index而不是/index.php -如果它加载了PHP文件,这就是影响您的问题。
这是MultiViews Apache选项,它很愚蠢,但必须专门启用它。进入您的站点配置文件,查看启用它的位置,并将其删除。
如果您不能完全控制您的服务器配置,则以下方法可能在.htaccess中起作用(讽刺的是,这取决于您的服务器配置)。
Options -Multiviewshttps://stackoverflow.com/questions/2090881
复制相似问题