.htaccess重定向整个子域但只有一个目录

时间:2014-10-31 16:17:30

标签: apache .htaccess mod-rewrite redirect

我正在创建一个在子域中组织的多语言网站。我有en,fr和es。 目前还没有完成,所以我将所有内容重定向到旧网站,但我想提供一些部分。 这是我的代码:

RewriteCond %{HTTP_HOST} ^es\.domain\.org$ [NC]
RewriteCond %{REQUEST_URI} !^ccc
RewriteRule (.*) http://www.domain.org/es [R=302,L]

但它不起作用。当我尝试es.domain.org/ccc时,我会去http://www.domain.org/es。 有什么建议吗?感谢

编辑:我还尝试使用skip标记,但没有成功:

RewriteCond %{REQUEST_URI} ^/ccc/(.*)$
RewriteRule .? - [S=1]
RewriteCond %{HTTP_HOST} ^es.domain.org$
RewriteRule (.*) http://www.domain.org/es [R=302,L]
RewriteCond %{HTTP_HOST} ^ru.domain.org$
RewriteRule (.*) http://www.domain.org/ru [R=302,L]

但它也不起作用。在这种情况下,当页面ccc(我使用Drupal)时,我们应该跳过第一个规则并应用第二个规则。作为测试,如果我访问es.domain.org/ccc,应该发生任何事情,如果我访问ru.domain.org/ccc或其他任何我应该重定向到http://www.domain.org/ru或/ es。但它不起作用。

1 个答案:

答案 0 :(得分:0)

您可以使用此基于预后的负面规则:

RewriteCond %{HTTP_HOST} ^es\.domain\.org$ [NC]
RewriteRule ^((?!ccc).*)$ http://www.domain.org/es/$1 [R=302,L,NC]