301使用正则表达式重定向 - 特殊情况

时间:2013-12-11 14:23:11

标签: regex apache .htaccess mod-rewrite redirect

这个主题对我来说很抽象,我担心我永远不会真正理解如何创建正确的模式。

我确实有1500个++网址,我需要用301重定向。这个手动很多,所以必须有一个解决方案。

该网站包含以下网址:

somedomain.tld / somepath /

somedomain.tld / somepath / somefile.ext

somedomain.tld / somepath / somepath /文本0123456

somedomain.tld / somepath / somepath /一些-更多文本-0120123

somedomain.tld / somepath / somepath /数字-1234-7654321

我需要重定向的是最后3种类型的URL。新目标应该看起来几乎相同,但没有最后一个数字和最后一个冲程。

IE:

OLD:somedomain.tld / somepath / somepath / text-0123456

新:somedomain.tld / somepath / somepath / text

OLD:somedomain.tld / somepath / somepath / some-more-text-0120123

新:somedomain.tld / somepath / somepath / some-more-text

OLD:somedomain.tld / somepath / somepath / numbers-1234-7654321

新:somedomain.tld / somepath / somepath / numbers-1234

用文字说明重定向应该选择以“ - ”和7位数字结尾的所有网址,并将它们重定向到不带“ - ”且没有7位数字的相同网址。

提前感谢您的支持! 托马斯

2 个答案:

答案 0 :(得分:2)

这绝对可以通过基于正则表达式的规则来解决。将此代码放在DOCUMENT_ROOT/.htaccess文件中:

RewriteEngine On

RewriteRule ^(.+?)-[0-9]{7}$ /$1 [L,R]

答案 1 :(得分:1)

RewriteCond %{HTTP_HOST}:%{SERVER_PORT}s ^(.*):(443(s)|\d+s)$
RewriteRule ^/?(.+)-[0-9]{7}$ http%3://%1/$1 [R=301,QSA,L]

将负责重定向,保持相同的协议和可能的GET参数......