我的客户上传了数千张图片,其中包含1057_1.jpg
,1057_2.jpg
,1083_1H.jpg
等名称 - 始终是数字,下划线,数字和可选字母。 CMS使用这些链接将它们链接到相关条目。
出于搜索引擎优化的原因,我们希望这些图像文件名包含从CMS中获取的一些关键字。所以,他们会变成1057_1-some-keywords-here.jpg
。是否有一种方法,使用.htaccess,以保持文件名相同,但将1057_1-any-arbitrary-words.jpg
重定向到1057_1.jpg
?基本上要删除从第一个破折号到点的所有内容吗?
感谢您的帮助 - 我必须在某个时候正确学习htaccess,但现在需要找到快速解决方案!
答案 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
中除最后一个之外的任意数量的句点。