1

我有一个客户,他上传了数千张名称如1057_1.jpg,1057_2.jpg等的图像1083_1H.jpg- 总是一个数字、一个下划线、一个数字和一个可选字母。CMS 使用这些将它们链接到相关条目。

出于 SEO 的原因,我们希望这些图像文件名包含一些取自 CMS 的关键字。所以他们会变成,比如说,1057_1-some-keywords-here.jpg。有没有办法使用 .htaccess 来保持文件名相同,但重定向1057_1-any-arbitrary-words.jpg1057_1.jpg? 基本上要删除从第一个破折号到点的所有内容?

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

4

1 回答 1

1

你可以试试这个:

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

永久重定向任何 URL,例如:

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 路径中的最后一个字符串中删除。

图像名称必须是 URL 路径中的最后一个字符串,才能使规则集起作用。

对于静默映射,请R=301[R=301,L].

更新:

anything不包括句点,因为它用于确定名称的结尾和扩展名的开始。anything但是,根据先前评论中的 OP 要求,我修改了规则集以删除除最后一个以外的任意数量的句点。

于 2013-02-04T19:16:26.400 回答