我有网址:
http://www.mywebsite.com/i/1Q2GmFuFdZ.jpg
我想重写一个规则,使其转到文件image.php?id=1Q2GmFuFdZ.jpg
在我的PHP文件中,我有这个
<?PHP
print_r($_GET);
?>
这就是我在htaccess中所拥有的
RewriteEngine On
RewriteRule ([a-zA-Z0-9]+[\.]+[a-z]{3})$ image.php?id=$1
这是我得到的输出:
Array ( [id] => image.php )
我不确定我做错了什么。我不是正则表达式专家,但我知道基础知识。
由于
编辑: 忘了在表达式中添加0-9
答案 0 :(得分:3)
mod_rewrite规则以递归方式应用。以下是您请求1Q2GmFuFdZ.jpg
时发生的情况:
1Q2GmFuFdZ.jpg
与模式匹配,变为image.php?id=1Q2GmFuFdZ.jpg
image.php
也匹配模式 并重写为image.php?id=image.php
image.php?id=image.php
解决方案:添加此规则:
RewriteEngine On
RewriteRule image\.php$ - [L]
RewriteRule ([a-zA-Z0-9]+\.[a-z]{3})$ image.php?id=$1
第二条规则是手刹。您还需要调整规则#3。
答案 1 :(得分:1)
您的重写规则错误。它应该是这样的:
RewriteRule ^i/(.+)$ /image.php?id=$1 [L,NC,QSA]