重定向规则不存在';我不能在我的.htaccess中工作
我绞尽脑汁想找出问题所在: 我有以下重定向规则:重定向规则不存在';我不能在我的.htaccess中工作,.htaccess,.htaccess,我绞尽脑汁想找出问题所在: 我有以下重定向规则: RewriteRule ^/productname(.*) https://website.com/category [R=301,NC,L] 但它不起作用,我也不明白为什么。因为这条规则: Redirect 301 ^/productname(.*) https://website.com/category/subcategory/productname 很好 非常感谢您的帮助 这在每个目录.htaccess文件中不起作用,因为重写规则模式
RewriteRule ^/productname(.*) https://website.com/category [R=301,NC,L]
但它不起作用,我也不明白为什么。因为这条规则:
Redirect 301 ^/productname(.*) https://website.com/category/subcategory/productname
很好
非常感谢您的帮助
这在每个目录.htaccess
文件中不起作用,因为重写规则
模式匹配的URL路径小于目录前缀(.htaccess
文件所在的文件系统路径)。目录前缀始终以斜杠结尾,因此由重写规则
模式匹配的URL路径从不以斜杠开头
从:
在每个目录上下文(directory和.htaccess)中,模式仅与部分路径匹配,例如“/app1/index.html”请求可能导致与“app1/index.html”或“index.html”进行比较,具体取决于重写规则的定义位置
在比较之前,定义规则的目录路径将从当前映射的文件系统路径中剥离出来(最多包括一个尾随斜杠)。这种按目录前缀剥离的净结果是,此上下文中的规则仅与定义规则的当前映射文件系统路径“下方”的部分匹配
因此,您需要删除斜杠前缀,例如:
RewriteRule ^productname https://website.com/category [R=301,NC,L]
在本例中,RewriteRule
模式的尾部(.*)
是多余的
这条规则“行不通”。我想你的意思是重定向匹配
请注意,RewriteRule
和Redirect
(和RedirectMatch
)属于不同的模块。mod_rewrite和mod_alias-您应该避免混合来自这两个模块的重定向,因为您可能会遇到意外冲突
RewriteRule ^productname https://website.com/category [R=301,NC,L]
Redirect 301 ^/productname(.*) https://website.com/category/subcategory/productname