.htaccess删除文件名中的任意文本

时间:2013-02-04 17:42:12

标签: .htaccess mod-rewrite

我的客户上传了数千张图片,其中包含1057_1.jpg1057_2.jpg1083_1H.jpg等名称 - 始终是数字,下划线,数字和可选字母。 CMS使用这些链接将它们链接到相关条目。

出于搜索引擎优化的原因,我们希望这些图像文件名包含从CMS中获取的一些关键字。所以,他们会变成1057_1-some-keywords-here.jpg。是否有一种方法,使用.htaccess,以保持文件名相同,但将1057_1-any-arbitrary-words.jpg重定向到1057_1.jpg?基本上要删除从第一个破折号到点的所有内容吗?

感谢您的帮助 - 我必须在某个时候正确学习htaccess,但现在需要找到快速解决方案!

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

RewriteEngine On
RewriteBase /
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /([^\-]+)-.+\.([^/]+)/?
RewriteRule .*    %1.%2     [R=301,L]

永久重定向任何网址,例如:

http://example.com/1057_1-anything.jpg

http://example.com/any/number/of/folders/1057_1-anything.jpg

要:

http://example.com/1057_1.jpg

http://example.com/any/number/of/folders/1057_1.jpg

从网址路径中的最后一个字符串中有效删除-anything

图片名称必须是URL路径中的最后一个字符串,规则集才能正常工作。

对于静默映射,请从R=301中删除[R=301,L]

更新

anything未包含用于确定名称末尾和扩展名开头的句点。但是,根据之前评论中的OP要求,我修改了规则集以删除anything中除最后一个之外的任意数量的句点。