3

我有一系列图像,我想为 SEO 重命名。但是,我有超过 6,000 张图像,所以我认为必须对我的 .htaccess 文件进行简单的重写。

当前图像当前使用以下模式命名:

http://www.mydomain.com/images/small/00005712.jpg

http://www.mydomain.com/images/medium/00005712.jpg

http://www.mydomain.com/images/large/00005712.jpg

我希望能够使用命名方案来调用它们,例如:

http://www.mydomain.com/5712s-keyword-phrase.jpg

http://www.mydomain.com/5712m-keyword-phrase.jpg

http://www.mydomain.com/5712l-keyword-phrase.jpg

这将允许我从以下位置更改显示:

<img src="http://www.mydomain.com/images/large/00005712.jpg" />

<img src="http://www.mydomain.com/5712l-keyword-phrase.jpg" />

重写有望让我简单地更改我的 php 文件中 img src 属性的模式。具有新名称的整个站点的 img src 属性实际上会将原始图像呈现到屏幕上。

所有文件名都有 8 位数字名称,左边用 0 填充。

另请注意,如果您知道使用左侧的关键字短语和末尾的数字来执行此操作的方法,例如http://www.mydomain.com/keyword-phrase-5712s.jpg它会会更好。

如果我没有提供足够的细节,请让我知道我可以做些什么来澄清。对此问题的任何帮助将不胜感激。

4

3 回答 3

1

如果您将文件夹重命名为 sm 和 l,您可以使用 1 个规则集

RewriteCond %{REQUEST_URI} (.*)\.jpg$
RewriteRule ^0*([1-9])(\d*)(s|m|l)(.*)$ /images/$3/$1$2.jpg

否则你需要 3

RewriteCond %{REQUEST_URI} (.*)\.jpg$
RewriteRule ^0*([1-9])(\d*)s(.*)$ /images/small/$1$2.jpg

RewriteCond %{REQUEST_URI} (.*)\.jpg$
RewriteRule ^0*([1-9])(\d*)m(.*)$ /images/medium/$1$2.jpg

RewriteCond %{REQUEST_URI} (.*)\.jpg$
RewriteRule ^0*([1-9])(\d*)l(.*)$ /images/large/$1$2.jpg 

编辑

根据下面的评论,要丢弃文件名之前的 SEO 术语,请使用:

RewriteRule ^.*(\d+)s\.(jpg|gif|png)$ /images/small/$1.$2
RewriteRule ^.*(\d+)m\.(jpg|gif|png)$ /images/medium/$1.$2
RewriteRule ^.*(\d+)l\.(jpg|gif|png)$ /images/large/$1.$2

开头的 .* 会丢弃图像数字之前的所有前导字符。由于现在文件 url 中包含前导零,我们可以只使用 (\d+) 来匹配 (s|m|l) 文件夹指示符和图像文件扩展名之前的 1 个或多个数字。

于 2012-08-01T05:56:39.823 回答
0

您需要确保在您的服务器上安装并启用了 mod rewrite:

RewriteEngine On
RewriteRule *(\d{8})l\.(gif|jpg|png)$ /images/large/$1.jpg
RewriteRule *(\d{8})s\.(gif|jpg|png)$ /images/small/$1.jpg
RewriteRule *(\d{8})m\.(gif|jpg|png)$ /images/medium/$1.jpg

未经测试,我将进行一些编辑以使其如此。

*- 匹配 URL 中的任何前导字符

(\d{8})- 匹配一组 8 位数字

l- 匹配large

\.- 匹配文字.

(gif|jpg|png)- 匹配gifjpgpng

$- 匹配 URL 的结尾

把它们放在一起:

匹配表单的任何请求(这是您要求的“更好”解决方案)

http://www.mydomain.com/keyword-phrase-{ANY 8 DIGITS}.gif

http://www.mydomain.com/keyword-phrase-{ANY 8 DIGITS}.jpg

http://www.mydomain.com/keyword-phrase-{ANY 8 DIGITS}.png

笔记

我的缺少填充填充的前导 0,因此您必须在前面包含空的 0。

于 2012-08-01T05:53:15.783 回答
0

您可以在服务器中创建一个符号链接,该链接将重写为您的原始路径。

供您参考链接

于 2012-08-01T05:55:57.387 回答