htaccess仅在特定目录匹配时重定向到域(不递归)

时间:2013-01-16 21:05:12

标签: .htaccess directory rewrite conditional-statements rule

我正在尝试完成这样的 RewriteCond ,但我遇到了正则表达式的问题

REDIRECT to domain1.tld 仅限当前地址为domain2.tld / test /但 NOT IF domain2.com/test/_appz /

域名可能无关紧要:

重定向到domain1.tld 仅限当前地址包含目录/ test /但 NOT IF 在/ test / _appz /更深层

我想要达到条件:

domain2.tld / test />>>重定向

domain2.tld / test / _appz />>>留

otherdomain.tld>>>留

修改

我正在为自己的目的编写自己的CMS,有2个域指向同一个public_html,

一个是官方的,一个仅用于通过CMS访问。

cms.domain2.tld/test/ >>> redirect to domain1.com

cms.domain2.tld/test/_appz/ >>> no redirect

domain1.tld>>> no redirect (as it will be loop)

domain1.tld cms.domain2.tld 指向 .htaccess 存在的同一目录

提前感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用mod_alias或mod_rewrite进行重定向。请注意,使用mod_alias,想要使用Redirect指令,它将虚拟链接两个路径节点,这不是您想要的。

mod_alias中

domain2.tld 的文档根目录中的htaccess文件中,添加:

RedirectMatch ^/test/?$ http://domain1.tld/

如果您想要永久重定向:

RedirectMatch 301 ^/test/?$ http://domain1.tld/

mod_rewrite的

如果您有可能干扰mod_alias的重写规则,那么您可能只想坚持使用mod_rewrite。此外,如果 domain1.tld domain2.tld 共享相同的文档根目录,您将无法使用mod_alias。你想要这样的东西:

RewriteEngine On
RewriteCond %{HTTP_HOST} domain2.tld$ [NC]
RewriteRule ^/?test/?$ http://domain1.tld/ [L,R]

如果您想要永久重定向,请将标记更改为[L,R=301]