Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 图像url的htaccess重写规则_Php_Regex_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Php 图像url的htaccess重写规则

Php 图像url的htaccess重写规则,php,regex,apache,.htaccess,mod-rewrite,Php,Regex,Apache,.htaccess,Mod Rewrite,我有网址: http://www.mywebsite.com/i/1Q2GmFuFdZ.jpg 我想重写一条规则,使其进入文件image.php?id=1Q2GmFuFdZ.jpg 在我的PHP文件中,我有 <?PHP print_r($_GET); ?> 这是我得到的输出: Array ( [id] => image.php ) 我不确定我做错了什么。我不是regex专业人士,但我知道基本知识 谢谢 编辑: 忘记在表达式中添加0-9,您的重写规则错误。应该是这样的: Re

我有网址:
http://www.mywebsite.com/i/1Q2GmFuFdZ.jpg

我想重写一条规则,使其进入文件
image.php?id=1Q2GmFuFdZ.jpg

在我的PHP文件中,我有

<?PHP
print_r($_GET);
?>
这是我得到的输出:

Array ( [id] => image.php )
我不确定我做错了什么。我不是regex专业人士,但我知道基本知识

谢谢

编辑:
忘记在表达式中添加0-9,您的重写规则错误。应该是这样的:

RewriteRule ^i/(.+)$ /image.php?id=$1 [L,NC,QSA]

你的重写规则是错误的。应该是这样的:

RewriteRule ^i/(.+)$ /image.php?id=$1 [L,NC,QSA]

mod_重写规则是递归应用的。下面是当您请求
1Q2GmFuFdZ.jpg
时发生的情况:

  • 1Q2GmFuFdZ.jpg
    匹配模式,成为
    image.php?id=1Q2GmFuFdZ.jpg
  • 由于文件名已更改,将使用重新写入的URL执行另一次迭代
  • 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。

mod#u重写规则是递归应用的。下面是当您请求
1Q2GmFuFdZ.jpg
时发生的情况:

  • 1Q2GmFuFdZ.jpg
    匹配模式,成为
    image.php?id=1Q2GmFuFdZ.jpg
  • 由于文件名已更改,将使用重新写入的URL执行另一次迭代
  • 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。

我认为它仍然会产生相同的结果(尽管未验证)。我认为它仍然会产生相同的结果(尽管未验证)。