首页 文章

.htaccess图片网址的RewriteRule

提问于
浏览
-1

目前我有以下.htaccess重写规则:

RewriteCond %{HTTP_HOST} ^blitz.example.com.s3-ap-southeast-1.amazonaws.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]

我正在尝试重写以下URL,使其指向实际的URL(请参阅下面的第2个链接):

http://blitz.example.com.s3-website-ap-southeast-1.amazonaws.com/3478-product_list_default/green-army-combats-type-i.jpg

我需要创建一个指向实际实际URL的RewriteRule,它是:

http://blitz.example.com.s3-website-ap-southeast-1.amazonaws.com/img/p/3/4/7/8/3478-product_list_default.jpg

谁能帮我这个 ?我真的很困惑这个RewriteRule和正则表达式 .

EDIT

我想使用以下网址:

http://blitz.example.com.s3-website-ap-southeast-1.amazonaws.com/3478-product_list_default/green-army-combats-type-i.jpg

并用另一个域重写它,如下所示:

http://blitz.example.com.s3-website-ap-southeast-1.amazonaws.com/img/p/3/4/7/8/3478-product_list_default.jpg

到目前为止,如果我使用以下html标签

<img src="http://blitz.example.com.s3-website-ap-southeast-1.amazonaws.com/3478-product_list_default/green-army-combats-type-i.jpg">

它返回404

EDIT 2

有趣的是,以下代码也会返回404错误

<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} ^blitz.example.com.s3-ap-southeast-1.amazonaws.com$
RewriteRule ^(.*)([0-9]+)([0-9]+)([0-9]+)([0-9]+)-([a-zA-Z0-9_\-/.]+)/([a-zA-Z0-9_\-/.]+)$ img/p/$2/$3/$4/$5/$2$3$4$5-$6.jpg [L]
</IfModule>

EDIT 3

出于绝望,我在我的.htaccess上只输了以下代码:

<IfModule mod_rewrite.c>

RewriteRule ^(.*)([0-9]+)([0-9]+)([0-9]+)([0-9]+)-([a-zA-Z0-9_\-/.]+)/([a-zA-Z0-9_\-/.]+)$ img/p/$2/$3/$4/$5/$2$3$4$5-$6.jpg [L]

</IfModule>

.htaccess中没有其他代码,但它仍然返回404 .

1 回答

  • 1

    你正试图捕捉到很多东西 . 首先,重写引擎不传递完整的URL而只传递URI,因此 http://blitz.example.com.s3-website-ap-southeast-1.amazonaws.com 永远不会被任何 RewriteRule 捕获,所以不要忘记它 . 其次,您捕获图像的名称,这似乎与我们的情况无关 .

    根据评论判断,图像位于CDN(Amazon S3)上 . 如果要将 http://blitz.example.com.s3-website-ap-southeast-1.amazonaws.com/3478-product_list_default/green-army-combats-type-i.jpg (1)转换为 http://blitz.example.com.s3-website-ap-southeast-1.amazonaws.com/img/p/3/4/7/8/3478-product_list_default.jpg (2):它是S3服务器的作业 . 为什么是这样?这是因为(1)的HTTP请求将由尝试加载图像的Web浏览器直接发送到S3服务器 . 所以 .htaccess 必须放在S3服务器上并启用 mod_rewrite .

    从正面看,你的正则表达式是正确的:Regex101

相关问题