Htaccess重定向问题与路径名



我有一个这样的路径结构:

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
  • /匹配文字/
  • ([^/]+)匹配名称
  • /?匹配末尾的可选/
  • $锚断言我们位于字符串
  • 的末尾

最新更新