我是 mod_rewrite 新手和正则表达式菜鸟,但这是我想做的事情:
我有一个脚本可以动态调整图像大小。我希望能够获取任何图像文件路径,向其添加查询字符串,然后将其自动发送到脚本进行处理。
因此类似于:
from: http://mysite.com/images/logo.jpg?w=100&h=50
to: http://mysite.com/images/thumbs/phpThumb.php?src=logo.jpg&w=100&h=50
当然,如果没有指定查询字符串,它应该只是指向原始文件。
使用.htaccess
/images 中的文件,我得到了这个。但它根本不起作用。或者充其量,它破坏了我所有网站的图像:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} ^.*
RewriteRule ([^\s]+(\.(?i)(jpg|png|gif|bmp))$) /thumbs/phpThumb.php?src=$1 [L,QSA]
</IfModule>
答案1
第一的添加重写库,这将删除/images/
查询字符串中的部分。您将得到photo.jpg?w=...
而不是/images/photo.jpg?w=...
。
第二添加/images/
到重定向,因为您当前的重定向告诉转到http://mysite.com/thumbs/phpThumbs...
而不是http://mysite.com/images/thumbs/phpThumbs...
。
结果是这样的:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /images/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} ^.+
RewriteRule ([^\s]+(\.(?i)(jpg|png|gif|bmp))$) /images/thumbs/phpThumb.php?src=$1 [L,QSA]
</IfModule>