.htaccess 重写规则如果图像文件,则执行此操作,否则执行此操作

.htaccess 重写规则如果图像文件,则执行此操作,否则执行此操作,.htaccess,mod-rewrite,rewrite,yourls,.htaccess,Mod Rewrite,Rewrite,Yourls,我很难让这个工作。。 我已经安装了YOURLS wich,这是一个用于缩短URL的PHP脚本。 为了工作,它需要具备以下条件: RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /you

我很难让这个工作。。 我已经安装了YOURLS wich,这是一个用于缩短URL的PHP脚本。 为了工作,它需要具备以下条件:

            RewriteEngine On
            RewriteBase /
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule ^(.*)$ /yourls-loader.php [L]
没问题。 但我还想使用一个与PHP脚本无关的图像托管目录。 它将检查请求的url是否以.jpg |.jpeg |.gif |.png结尾,RewriteRule将重定向到/imgshare/$1 我尝试了下面的代码,但在转到mysite.com/img.jpg时,我遇到了一个服务器错误,但不是因为url重定向“mysite.com/y4Jd”:


这不是问题所在,但请注意,您的第二次重写已匹配具有图像结尾的文件,因此无需在重写规则中重复该匹配。或者,不需要RewriteCond,因为它对RewriteRule是多余的

然而,真正的问题可能是在最终规则中有一个额外的斜杠$1将包含与原始URL匹配的前导斜杠,因此您的规则当前正在
imgshare
和文件名之间添加两个斜杠。我将执行如下规则:

RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png)$ [NC]
RewriteRule ^(.*)$ /imgshare$1 [L]
RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png)$ [NC]
RewriteRule ^(.*)$ /imgshare$1 [L]