.htaccess:如何仅在访问特定子目录时重定向到PHP脚本?

.htaccess:如何仅在访问特定子目录时重定向到PHP脚本?,.htaccess,redirect,mod-rewrite,.htaccess,Redirect,Mod Rewrite,我创建了一个.htaccess文件,将.png二维码请求重定向到PHP二维码生成器 RewriteEngine On RewriteBase /qr/ RewriteCond %{THE_REQUEST} \ /+([^\?\ ]+)\.png RewriteRule ^(.*)$ access-code.php?id=%1 [QSA,L] 它可以很好地满足原始目的,但也会将每个.png请求发送到同一个脚本。如果在/qr/access code/*目录中,我需要将RewriteCond更改为

我创建了一个.htaccess文件,将.png二维码请求重定向到PHP二维码生成器

RewriteEngine On
RewriteBase /qr/

RewriteCond %{THE_REQUEST} \ /+([^\?\ ]+)\.png
RewriteRule ^(.*)$ access-code.php?id=%1 [QSA,L]
它可以很好地满足原始目的,但也会将每个.png请求发送到同一个脚本。如果在/qr/access code/*目录中,我需要将
RewriteCond
更改为仅接受.png文件

我将.htaccess文件放在以下目录中:

/qr/.htaccess

工作正常的请求示例(不是实际链接):

示例请求“有效”,但我不希望它被重定向:

(不是实际链接)


如何调整.htaccess条件以使规则按预期运行?

您可以使用以下选项:

RewriteEngine On
RewriteBase /qr/
##If /document_root/dir/foo.png is an existent file##    
RewriteCond %{DOCUMENT_ROOT}/access-code/$1 -f
##Rewrite /foo.png to access-code.php?id=foo.png
RewriteRule ^(.+\.png)$ access-code.php?id=$1 [QSA,L]

我想这很接近,但不是很接近。在%{DOCUMENT_ROOT}/access code/$1中找不到任何文件。这些请求将被重定向到access-code.php(它会传递生成的文件)。我将继续使用此版本的变体。更新:您的最后一行代码比我原来的版本有了很大的改进,安全性更好,谢谢!我对你的情况做了调整,看起来效果很好。我可以让你编辑你的答案,我给你支票吗<代码>重写cond%{REQUEST_URI}“/访问代码/”