我希望能够重写这个
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旗!为什么呢?
答案 0 :(得分:2)
向最后一条规则添加条件,以排除可映射到现有文件的请求:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?t=$1 [QSA,L]
这是必要的,因为L flag会生成内部重定向,并将新网址作为请求网址:
但请记住,如果
RewriteRule
生成内部重定向(在每个目录上下文中重写时经常发生),这将重新注入请求并导致从第一个{重复开始重复处理} {1}}。
答案 1 :(得分:0)
(答案不正确;留待参考)
我只知道可能是什么问题 - 这是长期困扰我的事情。
根据您的服务器设置,很可能会将identicon/xxx.png
解释为identicon.php/xxx.png
的请求,假设PHP扩展名是您想要的。尝试转到/index
而不是/index.php
- 如果它加载了PHP文件,这就是影响你的问题。
这是MultiViews Apache选项,它很愚蠢,但必须专门启用它。进入您的站点配置文件,查看它的启用位置,然后将其删除。
如果您无法完全控制服务器配置,则以下内容可能适用于.htaccess(具体而言,取决于您的服务器配置)。
Options -Multiviews