我有一个像这样的路径名结构:
domainname.com/categoryname / *
我需要将它们重定向到 domainname.com/newname/categoryname / *
这不起作用,因为这会产生无限循环 RewriteRule ^ foldername(。*)$ http://www.domainname.com/newname/categoryname $ 1 [R = 301,L]
注意:“categoryname”实际上不是一个文件夹;它是使用干净URL的路径名的一部分。 “newname”是文件夹中的新安装。我只从根目录中的主安装中删除一些项目到文件夹中的安装。
答案 0 :(得分:0)
请改用:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(?!newname)([^/]+)/([^/]+)/?$ newname/$1/$2 [R=301,L]
^
锚点断言我们位于字符串的开头(?!newname)
声称接下来的内容不是newname
,而是避免循环([^/]+)
会将类别名称捕获到第1组/
与文字/
([^/]+)
与名称匹配/?
匹配最后的可选/
$
锚点断言我们位于字符串的末尾