我有一个这样的路径结构:
domainname.com/categoryname/*
我需要将它们重定向到domainname.com/newname/categoryname/*这行不通,因为这会创建一个无限循环。
rewriterrule ^foldername(.*)$ http://www.domainname.com/newname/categoryname$1 [R=301,L]
注意:"categoryname"不是一个真正的文件夹;它是路径名的一部分,使用干净的url。"newname"是文件夹中的新安装。我只从根目录下的主安装中删除一些项目到文件夹中的安装。
用这个代替:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(?!newname)([^/]+)/([^/]+)/?$ newname/$1/$2 [R=301,L]
-
^
锚断言我们位于字符串 的开头。 -
(?!newname)
断言后面的不是newname
,避免了循环 -
([^/]+)
将类别名称捕获到组1 -
/
匹配文字/
-
([^/]+)
匹配名称 -
/?
匹配末尾的可选/
-
$
锚断言我们位于字符串 的末尾