我正在更改网站结构,现在为了保持我在网络上指向正确页面的所有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 /
之后"字符串到保持"长度和字数也各不相同。
我怎样才能做到这一点?有办法吗?
答案 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]