我有电子邮件简报的存档。原始源代码指向以下图像:
http://example.com/email/2015-06-16/weekend.jpg
...但是自从移动到存档后,现在实际的图像文件存在于:
http://example.com/email/archive/2015/2015-06-16/weekend.jpg
我的想法是使用htaccess,regex和Apache的RewriteEngine将“archive / 2015 /”插入到图像请求的中间。但我对正则表达式并不擅长。我可以描述我需要什么,但我不知道实现它的语法。
请求http://example.com/email/[someyear]-06-16/weekend.jpg时,请在“email /”
之后插入“archive / [someyear] /”请帮帮忙?
答案 0 :(得分:0)
你不需要正则表达式。尝试简单的重定向
Redirect 301 /email/ http://example.com/email/archive/2015/
答案 1 :(得分:0)
您可以使用mod_rewrite
:
RewriteRule ^email/((\d{4})-\d{2}.+) /email/archive/$2/$1 [R=302,L]
在这里,我们正在捕捉以下内容:
2015
使用(\d{4})
作为$2
,其中{4}
是要捕获的数字位数06
使用\d{2}
(无需捕获此信息,因为我们将其包含在下面的第4点)06
与.+
email/
之后的所有内容以及包含上述三点的父母的我们然后从上面的第1点抓取$2
以及从第4点抓取$1
我们将它重新组合在一起。我们只检查第2点以确保我们正确看到正确的格式 - 这就是为什么我们不检查当天(我们不需要那么严格)。
基本上,这只是一个捷径。这可以扩展(为了便于理解)以下内容:
RewriteRule ^email/(\d{4})-(\d{2})-(\d{2})/(.+) /email/archive/$1/$1-$2-$3/$4 [R=302,L]
一旦您满意,请将302
更改为301
以缓存重定向。