Apache重定向除一个目录以外的所有子目录

猴子宙斯

因此,我有以下网址:

www.example.com/parent/child1
www.example.com/parent/child2
www.example.com/parent/child3
www.example.com/parent/cool-feature
www.example.com/parent/product
etc...

我需要将所有孩子重定向child2到一个新域。


到目前为止,我想出了:

RedirectMatch ^/parent(?!/child2) http://www.new-example.com/parent/

这适用于:

www.example.com/parent/child2

但不适用于:

www.example.com/parent/child2/

由于尾部有斜线


无济于事,我试过了:

RedirectMatch ^/parent(?!/child2/) http://www.new-example.com/parent/
RedirectMatch ^/parent(?!/child2\/) http://www.new-example.com/parent/
RedirectMatch ^/parent(?!/child2)/ http://www.new-example.com/parent/
RedirectMatch ^/parent/(?!child2)/ http://www.new-example.com/parent/
DocRoot

正如评论中所提到的那样,您的初始指令本身应能按预期工作。都不存在/parent/child2/parent/child2/或者/parent/child2/anything应该重定向。

但是,由于您具有“其他指令”,包括“前端控制器”,因此可能会发生冲突。特别是因为您的前端控制器可能使用mod_rewrite,并且RedirectMatch是mod_alias指令。尽管中的明显顺序,mod_rewrite始终将首先执行.htaccess但是这些重定向应该首先在前端控制器之前执行。

尝试将其更改为mod_rewrite重定向,并确保它位于.htaccess文件顶部附近,且位于前端控制器之前。

RewriteRule ^parent(?!/child2) http://www.new-example.com/parent/ [R=302,L]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Nginx将一个子目录的所有内容重定向到另一个子目录

从所有子目录删除文件,保留一个子目录以外的文件夹结构

忽略.gitignore中除一个子目录外的所有子目录

在 find 命令中排除除一个特定路径之外的所有子目录

忽略除一个文件外的所有文件和子目录中的文件

如何压缩除一个子目录以外的目录内容?

从目录和所有子目录获取所有文件,但不包含一个子目录

htaccess-重定向除子目录外的所有内容(Ember js)

htaccess 将子目录重定向到另一个子目录

删除除与特定模式匹配的子目录以外的所有子目录

.htaccess重定向子目录下的所有子目录

IIS URL重写重定向所有子目录

所有子目录的301重定向

410重定向所有子目录

为特定目录中除子目录外的所有C ++文件生成一个标记文件

Git,忽略除子目录中的一些文件以外的所有文件

将另一个域重定向到现有的drupal安装的子目录

.htaccess使用代理从子目录重定向到另一个域

将主域重定向到子域,但保留一个子目录

如何使用.htaccess重定向到同名的另一个子目录

将多个子文件夹/子目录重定向到一个域

除一个路由外,是否所有路由都使用基本名称子目录?

使用git filter-branch删除除一个子目录外的所有内容

Apache从任何子目录重定向到根目录

如何通过终端在每个子目录中复制除一个文件以外的整个目录?

将一个域重定向到另一个域子目录

将所有子目录请求重定向到完整的请求目录的单个文件

有没有一种优雅的方式将当前目录中的所有子目录移动到一个新的子目录?

通过.htaccess将URL和子目录重定向到另一个URL和子目录