htaccess 将子目录重定向到上层
htaccess redirect subdirectories to upper level
我可以添加什么规则来获得以下结果?
在url中包含“/manufacturer/任何符号”的任何子文件夹只需重写到上层,例如
domain.net/catalog/file/manufacturer/?categorylayout=0&showcategory=1&showproducts=1&productsublayout=0
到
domain.net/catalog/file/
Htaccess
RedirectMatch 301 ^/manufacturer/ /
不会工作。它应该从 url 的末尾删除 GET 参数,并且 QSD 标志导致 500 错误。
我想这就是您要找的:
RewriteEngine on
RewriteRule ^/?(.+)/manufacturer/ // [R=301,QSD]
如果加载了重写模块,这将在 http 服务器主机配置或动态配置文件 (.htaccess
) 中起作用。
如果您决定使用动态配置文件的解释,则必须启用。在这种情况下,该文件应放在您的 http 服务器 DocumentRoot
文件夹中。
您的描述在一个小细节上自相矛盾:在描述中您说“/manufacturer/any 符号”,但示例显示 URL 没有这样的符号(注意 GET 参数是 不被认为是URL)的一部分。因此,根据您的具体要求,上述规则可能需要稍作修改...
一般性提示:您应该始终更喜欢将此类规则放在 http 服务器主机配置中,而不是使用动态配置文件 (".htaccess")。众所周知,这些文件容易出错,难以调试,而且它们确实会降低服务器速度。它们仅在您无法控制主机配置(阅读:非常便宜的托管服务提供商)或您的应用程序依赖于编写自己的重写规则(这是一个明显的安全噩梦)的情况下作为最后的选择提供).
我可以添加什么规则来获得以下结果?
在url中包含“/manufacturer/任何符号”的任何子文件夹只需重写到上层,例如
domain.net/catalog/file/manufacturer/?categorylayout=0&showcategory=1&showproducts=1&productsublayout=0
到
domain.net/catalog/file/
Htaccess
RedirectMatch 301 ^/manufacturer/ /
不会工作。它应该从 url 的末尾删除 GET 参数,并且 QSD 标志导致 500 错误。
我想这就是您要找的:
RewriteEngine on
RewriteRule ^/?(.+)/manufacturer/ // [R=301,QSD]
如果加载了重写模块,这将在 http 服务器主机配置或动态配置文件 (.htaccess
) 中起作用。
如果您决定使用动态配置文件的解释,则必须启用。在这种情况下,该文件应放在您的 http 服务器 DocumentRoot
文件夹中。
您的描述在一个小细节上自相矛盾:在描述中您说“/manufacturer/any 符号”,但示例显示 URL 没有这样的符号(注意 GET 参数是 不被认为是URL)的一部分。因此,根据您的具体要求,上述规则可能需要稍作修改...
一般性提示:您应该始终更喜欢将此类规则放在 http 服务器主机配置中,而不是使用动态配置文件 (".htaccess")。众所周知,这些文件容易出错,难以调试,而且它们确实会降低服务器速度。它们仅在您无法控制主机配置(阅读:非常便宜的托管服务提供商)或您的应用程序依赖于编写自己的重写规则(这是一个明显的安全噩梦)的情况下作为最后的选择提供).