0

我很难让它工作.. 我已经安装了 YOURLS,它是一个用于缩短 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 %{REQUEST_URI} !(\.jpg|\.jpeg|\.gif|\.png)$ [NC]
    RewriteRule ^(.*)$ /yourls-loader.php [L]
    RewriteCond %{REQUEST_URI} (\.jpg|\.jpeg|\.gif|\.png)$ [NC]
    RewriteRule ^(.*\.(jpeg|jpg|png|gif))$ /imgshare/$1 [L]
4

1 回答 1

0

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

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

RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png)$ [NC]
RewriteRule ^(.*)$ /imgshare$1 [L]
于 2013-02-04T22:43:58.667 回答