我很难有这个工作.. 我已经安装了YOURLS,它是一个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]
答案 0 :(得分:0)
这不是问题,但作为一个注释,你的第二个RewriteCond已经匹配带有图像结尾的文件,所以不需要在RewriteRule中重复那个匹配。或者,不需要RewriteCond,因为它对RewriteRule来说是多余的。
然而,真正的问题可能是你在最终规则中有一个额外的斜线。 $ 1将包含从原始URL匹配的前导斜杠,因此您的规则当前在imgshare
和文件名之间添加了两个斜杠。我会实现这样的规则:
RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png)$ [NC]
RewriteRule ^(.*)$ /imgshare$1 [L]