寻求可同时修改路径并移除URL中特定字符串的301重定向正则表达式
寻求可同时修改路径并移除URL中特定字符串的301重定向正则表达式
嗨,我来帮你搞定这个301重定向需求!你需要同时完成两个核心操作:替换旧的路径前缀,以及移除文件名里的-365x365尺寸后缀,这完全可以通过一条正则重写规则实现,我分两种常见的服务器环境给你详细说明:
Apache 服务器(使用.htaccess)
如果你用的是Apache,直接在网站根目录的.htaccess文件里添加以下规则即可:
RewriteEngine On RewriteRule ^/components/com_mijoshop/opencart/image/cache/(.*)/([^-]+)-365x365\.jpg$ /wp-content/uploads/nc/$1/$2.jpg [R=301,L]
咱们拆解一下这个规则的逻辑:
^/components/com_mijoshop/opencart/image/cache/精准匹配旧URL的固定前缀部分(.*)捕获中间可变的目录层级(比如示例里的catalog/ecom2)/([^-]+)捕获文件名中-365x365之前的核心名称(比如示例里的GM815)-365x365\.jpg$匹配需要移除的尺寸后缀和固定的文件扩展名- 替换后的路径
/wp-content/uploads/nc/$1/$2.jpg则把捕获到的目录和文件名拼接成新的URL
Nginx 服务器
如果你的网站是部署在Nginx上,就在配置文件的server块里添加以下规则:
location ~* ^/components/com_mijoshop/opencart/image/cache/(.*)/([^-]+)-365x365\.jpg$ { return 301 /wp-content/uploads/nc/$1/$2.jpg; }
扩展:匹配任意尺寸后缀
如果你的图片后缀不只是-365x365,还有其他类似-200x200、-400x400的尺寸格式,可以把正则里的-365x365改成-\d+x\d+,这样就能匹配任意数字组合的尺寸后缀了:
Apache 扩展版规则
RewriteEngine On RewriteRule ^/components/com_mijoshop/opencart/image/cache/(.*)/([^-]+)-\d+x\d+\.jpg$ /wp-content/uploads/nc/$1/$2.jpg [R=301,L]
Nginx 扩展版规则
location ~* ^/components/com_mijoshop/opencart/image/cache/(.*)/([^-]+)-\d+x\d+\.jpg$ { return 301 /wp-content/uploads/nc/$1/$2.jpg; }
备注:内容来源于stack exchange,提问作者Rebecca Hubbard
相关产品推荐
相关产品推荐

