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")。众所周知,这些文件容易出错,难以调试,而且它们确实会降低服务器速度。它们仅在您无法控制主机配置(阅读:非常便宜的托管服务提供商)或您的应用程序依赖于编写自己的重写规则(这是一个明显的安全噩梦)的情况下作为最后的选择提供).