动态htaccess重定向多个带有数字,字母和短划线的URL

时间:2017-03-16 12:33:13

标签: .htaccess

我正在更改网站结构,现在为了保持我在网络上指向正确页面的所有1000个实时链接,我尝试创建一个自动重定向的htaccess规则。 基本上,这是一个转换URL的规则:

mysite.pt/web/pt/variable-directory/variablenumber-string-to-keep.html

分为:

mysite.pt/string-to-keep

问题是我无法创建捕获所有网址的动态规则。我不太了解正则表达式(可能适用于此处?)。

以下是我现在所处的位置,这是一个静态且不完整的规则。

//Rewrite to www
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^mysite.pt/[nc]
RewriteRule ^(.*)$ http://www.mysite.pt//$1 [r=301,nc]

//301 Redirect Old File
Redirect 301 web/pt/variable-directory/variablenumber-string-to-keep.html string-to-keep/

首发" web / pt /"和最后一个" .html"总是一样的。 但是"变量目录" (长度和单词数量不同)和"变量数字" (单个号码,最多可达9999)从页面到页面的变化。

我试图删除这些元素以及" variablenumber"之后的额外短划线,只是为了保持" string-to-keep"在mysite.pt /

之后

"字符串到保持"长度和字数也各不相同。

我怎样才能做到这一点?有办法吗?

1 个答案:

答案 0 :(得分:0)

Redirect不支持正则表达式,您可以使用mod_rewrite使用这样的通用重定向规则:

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{HTTP_HOST} ^mysite\.pt$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,NE,L]

RewriteRule ^web/pt/[^/]+/\d+-(.+)\.html$ /$1 [L,NC,R=301,NE]