apachehtaccess使用条件

apachehtaccess使用条件,apache,.htaccess,Apache,.htaccess,我想在htaccess中使用条件,如果它是真的,请使用一些重写规则。 例如,我的想法是: if(subdomain='en' OR query string have '[lan=en]'){ RewriteRule ^home.html$ index.php [QSA,L] RewriteRule ^user/1.html$ user.php?id=1 [QSA,L] ..... }elseif(subdomain='fa' OR query string have '

我想在htaccess中使用条件,如果它是真的,请使用一些重写规则。 例如,我的想法是:

if(subdomain='en' OR query string have '[lan=en]'){
    RewriteRule ^home.html$ index.php [QSA,L]
    RewriteRule ^user/1.html$ user.php?id=1 [QSA,L]
    .....
}elseif(subdomain='fa' OR query string have '[lan=fa]'){
    RewriteRule ^home.html$ index_fa.php [QSA,L]
    RewriteRule ^karbar/1.html$ user.php?id=1 [QSA,L]
    .....
}
我怎么能做到? 对于每种情况,是否也可以使用不同的.htaccess文件


注意:我的域地址和查询字符串是动态的

通过httpd.conf启用mod_rewrite和.htaccess,然后在DOCUMENT_根目录下的.htaccess中使用如下规则:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^en\. [OR]
RewriteCond %{QUERY_STRING} (^|&)lan=en(&|$)
RewriteRule ^home\.html$ index.php [L]

RewriteCond %{HTTP_HOST} ^en\. [OR]
RewriteCond %{QUERY_STRING} (^|&)lan=en(&|$)
RewriteRule ^user/1\.html$ user.php?id=1 [QSA,L]

RewriteCond %{HTTP_HOST} ^fa\. [OR]
RewriteCond %{QUERY_STRING} (^|&)lan=fa(&|$)
RewriteRule ^home\.html$ index_fa.php [L]

RewriteCond %{HTTP_HOST} ^fa\. [OR]
RewriteCond %{QUERY_STRING} (^|&)lan=fa(&|$)
RewriteRule ^karbar/1\.html$ user.php?id=1 [QSA,L]

通过httpd.conf启用mod_rewrite和.htaccess,然后在DOCUMENT_根目录下的.htaccess中使用如下规则:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^en\. [OR]
RewriteCond %{QUERY_STRING} (^|&)lan=en(&|$)
RewriteRule ^home\.html$ index.php [L]

RewriteCond %{HTTP_HOST} ^en\. [OR]
RewriteCond %{QUERY_STRING} (^|&)lan=en(&|$)
RewriteRule ^user/1\.html$ user.php?id=1 [QSA,L]

RewriteCond %{HTTP_HOST} ^fa\. [OR]
RewriteCond %{QUERY_STRING} (^|&)lan=fa(&|$)
RewriteRule ^home\.html$ index_fa.php [L]

RewriteCond %{HTTP_HOST} ^fa\. [OR]
RewriteCond %{QUERY_STRING} (^|&)lan=fa(&|$)
RewriteRule ^karbar/1\.html$ user.php?id=1 [QSA,L]
您可以将一组RewriteCond指令与多个RewriteRule指令组合在一起,但方式很迂回:

RewriteCond %{HTTP_HOST} !^en\. [AND]
RewriteCond %{QUERY_STRING} !(^|&)lan=en(&|$)
RewriteRule .* - [S=2]
RewriteRule ^home\.html$ index.php [L]
RewriteRule ^user/1\.html$ user.php?id=1 [QSA,L]

RewriteCond %{HTTP_HOST} !^fa\. [AND]
RewriteCond %{QUERY_STRING} !(^|&)lan=fa(&|$)
RewriteRule .* - [S=2]
RewriteRule ^home\.html$ index_fa.php [L]
RewriteRule ^karbar/1\.html$ user.php?id=1 [QSA,L]
重写规则指令中的[S=2]标志意味着跳过接下来的2条规则;因此,规则是这样的:如果HTTP_主机不是以en开头的。并且查询字符串不包含lan=en,跳过下两条规则;因此,只有当上述条件不匹配时,才会考虑下两个规则。

您可以将一组RewriteCond指令与多个RewriteRule指令组合在一起,但可以采用迂回的方式:

RewriteCond %{HTTP_HOST} !^en\. [AND]
RewriteCond %{QUERY_STRING} !(^|&)lan=en(&|$)
RewriteRule .* - [S=2]
RewriteRule ^home\.html$ index.php [L]
RewriteRule ^user/1\.html$ user.php?id=1 [QSA,L]

RewriteCond %{HTTP_HOST} !^fa\. [AND]
RewriteCond %{QUERY_STRING} !(^|&)lan=fa(&|$)
RewriteRule .* - [S=2]
RewriteRule ^home\.html$ index_fa.php [L]
RewriteRule ^karbar/1\.html$ user.php?id=1 [QSA,L]

重写规则指令中的[S=2]标志意味着跳过接下来的2条规则;因此,规则是这样的:如果HTTP_主机不是以en开头的。并且查询字符串不包含lan=en,跳过下两条规则;因此,只有当上述条件不匹配时,才会考虑下两条规则。

您可以通过阅读来完成,特别是关于RewriteCond的部分。我的问题是,我有许多RewriteRules,RewriteCond只支持一条规则您可以通过阅读,特别是关于RewriteCond的部分,我的问题是我有很多RewriteCond规则,而RewriteCond只支持一条规则