仅重写特定子文件夹中的ROOT而不重写子文件夹下的任何目录

时间:2019-01-10 09:46:52

标签: .htaccess mod-rewrite url-rewriting

我只想重写子文件夹的 ROOT ,这意味着: 如果我转到:localhost/a/b/,则应将其重定向到localhost/a/,但localhost/a/b/c/应该保持不变。因此,仅直接发送到子文件夹 b 的请求将被重写,而在 b 目录下的内容将不会被重写,例如 c

我已经尝试过一些类似的事情:

RewriteCond %{HTTP_HOST} !^b$
RewriteRule ^$ /a [L,R=301]

RewriteRule ^/$ /a

RewriteRule ^/a/b/$ /a

我似乎找不到正确的解决方案。

1 个答案:

答案 0 :(得分:1)

您可以在网站根.htaccess中使用此规则:

RewriteEngine On

RewriteRule ^a/b/?$ /a [L,NC]

这是假设您的系统中没有其他.htaccess,这是首要规则。

如果要在a/.htaccess中执行此操作,则:

RewriteRule ^b/?$ /a [L,NC]

如果要在a/b/.htaccess中执行此操作,则:

RewriteRule ^/?$ /a [L]