Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache .htaccess重定向整个子域,但只重定向一个目录_Apache_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

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

Apache .htaccess重定向整个子域,但只重定向一个目录,apache,.htaccess,mod-rewrite,redirect,Apache,.htaccess,Mod Rewrite,Redirect,我正在创建一个多语种的网站组织在子域。我有en、fr和es。 目前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时,我会转到。 有什么建议

我正在创建一个多语种的网站组织在子域。我有en、fr和es。 目前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时,我会转到。 有什么建议吗?谢谢

编辑:我还尝试使用跳过标志,但没有成功:

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或任何其他我应该重定向到或/es的地方,则不会发生任何事情。但它不起作用。

您可以使用此基于消极前瞻的规则:

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

尝试
RewriteCond%{REQUEST\u URI}^/ccc
谢谢@anubhava,不幸的是,由于一些奇怪的原因,它不起作用。我还尝试了以下形式:
RewriteCond%{HTTP_HOST}^es\.domain\.org$[NC]RewriteRule^(?!ccc)(*)http://www.domain.org/es [R=302,L,NC]
捕获子目录失败。对于哪个URL无效?在这个htaccess中有更多的规则吗?似乎它只是被忽略了。规则是第三条。第一条规则发送到443所有“编辑流量”,第二条规则工作正常。以下是规则2和3:
##西班牙语RewriteCond%{HTTP_HOST}^es\.domain\.org$RewriteCond%{REQUEST_URI}^/ddd/d1(.*)$RewriteRule(.*)http://www.domain.org/es/d1_old [R=302,L]RewriteCond%{HTTP_HOST}^es\.domain\.org$[NC]RewriteRule^(?!123ccc)(*))http://www.domain.org/es [R=302,L,NC]
将此规则作为
行上的
重写引擎下方的第一条规则,并且您必须在目标中
$1
,如我的答案
http://www.domain.org/es/$1