我想使用以下网址:
http://mydomain.com/320x200/server/path/to/my/image.jpg
您可以在哪里找到 3个参数来检索重写:
320x200
:可选参数,可以是两个数字(如“320x200”),或单个数字(如“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,一切都好!
答案 0 :(得分:3)
您应该通过分组来划分工作。不要费心将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]+.*$
会阻止循环。
答案 1 :(得分:0)
我没试过,但我希望它有效:
RewriteRule ^(([0-9]+)(x)([0-9]+)/|)([a-zA-Z0-9]+)\/([a-zA-Z0-9_\/\.-]+)$ htp://myotherdomain.com/$2$3$4$5$6/$7 [L]
$2 = 320 or empty
$3 = 'x' or empty
$4 = 200 or empty
$5 = '/' or empty
$6 = 'server'
$7 = path to image