我想使用以下网址:
http://mydomain.com/320x200/server/path/to/my/image.jpg
在哪里可以找到3个要重新检索的参数:
> 320×200:可选参数,可以是两个数字(如“320×200”),或单个数字(如“320x”)或空(仅“x”)
> server:required(这是查找托管图像的服务器的特定参数,但对于这种情况并不重要)
> path / to / my / image.jpg:必需
并用另一个域重写它,如下所示:
http://myotherdomain.com/320/200/server/path/to/my/image.jpg
我尝试了以下重写规则,但它不起作用:
RewriteRule ^([0-9])x([0-9])/([a-zA-Z0-9])/([a-zA-Z0-9 /.])$htp:// myotherdomain. com / $1 / $2 / $3 / $4 [L]
RewriteRule ^([0-9])x /([a-zA-Z0-9])/([a-zA-Z0-9 /.])$htp://myotherdomain.com/$1/$2/$3 [L]
RewriteRule ^ x /([a-zA-Z0-9])/([a-zA-Z0-9 /.])$htp://myotherdomain.com/$1/$2 [L]
为什么不起作用?
当通过像regexplanet.com这样的网站测试时,3个正则表达式正在运行
我试图清除浏览器缓存,重新启动Apache,删除cookie,…仍然无法正常工作!
谢谢你的帮助
编辑:
最后,问题是我的.htaccess文件没有正确保存(不知道为什么).
我刚关闭并再次打开.htaccess,一切都好!
解决方法
你应该通过分组来划分工作.不要费心将x转换为/只是不捕获它.
RewriteRule ^([0-9]+)x([0-9]+/)([a-zA-Z0-9]+)/([a-zA-Z0-9/.]+)$http://myotherdomain.com/$1/$2$3/$4 [L] RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9/.]+)$http://myotherdomain.com/$1/$2 [L]
>([0-9])分别捕获两个分辨率参数.
>(?:….)?是一个非捕获分组呈现可选.
编辑:
可选性是一个陷阱.不要使用它 – >第二条规则.
如果其他域最终是同一个域:
RewriteCond %{REQUEST_URI} ![0-9]+/[0-9]+.*$
会阻止循环.