微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式 – 具有不同域的图像的URL重写

我想使用以下网址:

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]+.*$

会阻止循环.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐