我有一个重写规则,用于在用户访问我的index.php
目录时将其路由到我的/images/*
,以便我可以正确路由并在显示图像之前检查用户权限。
但是,这里的问题是,当我尝试向用户显示图像时,RewriteRule也会调用显示图像的调用。
如果执行的文件是PHP / phtml,有没有办法忽略RewriteRule?
我的htaccess
RewriteEngine on
RewriteRule (/)?images/(.*)$ /index.php?request=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?request=$1 [L,QSA]
我正在寻找像
这样的东西if the file executing is not a PHP script/being called from the server:
RewriteRule (/)?images/(.*)$ /index.php?request=$1 [L,QSA]
答案 0 :(得分:0)
您可以使用RewriteCond
检查当前请求是否不适用于.php
:
RewriteEngine on
RewriteCond %{REQUEST_URI} !\.php$ [NC]
RewriteRule (/)?images/(.+)$ /index.php?request=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?request=$1 [L,QSA]
答案 1 :(得分:0)
您可以尝试以下代码: -
.htaccess代码: -
RewriteRule (/)?images/authorize/(.*)$ /images/$1 [L,QSA] // Change path or name according to you
RewriteRule (/)?images/(.*)$ /index.php?request=$1 [L,QSA]
PHP代码: -
检查用户授权。
if ($user) // Authorized
{
redirect ('http://project_name/image/authorize/test.jpg'); //// Change path or name according to you
} else {
echo 'Not Authorized';
}
它可能对你有帮助。
答案 2 :(得分:0)
我不太精通网址重写。但我想你可能想尝试使用2 REWRITE_COND
指令。一个用于检查请求者的IP,另一个用于检查文件类型。
" REMOTE_ADDR 远程主机的IP地址(请参阅mod_remoteip模块)。"
所以我要说的是,也许你可以检查IP并允许你自己的网络服务器的IP(第一个cond
)来访问图像(为此你需要第二个cond
)。你应该好好去。