1

htaccess で条件を使用したいのですが、それが true の場合は、いくつかの書き換えルールを使用します。たとえば、私の考えは次のとおりです。

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 ファイルを使用する方法もありますか?

注:ドメイン アドレスとクエリ文字列は動的です

4

2 に答える 2

3

mod_rewrite と .htaccess を有効にしてから、下のディレクトリで次httpd.confのようなルールを使用します。.htaccessDOCUMENT_ROOT

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]
于 2012-06-06T12:07:22.353 に答える
1

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]フラグは、RewriteRule「次の 2 つのルールをスキップする」ことを意味します。したがって、ルールは次のようHTTP_HOSTen. なり QUERY_STRINGますlan=en。したがって、次の 2 つのルールは、上記の条件が一致しない場合にのみ考慮されます。

于 2012-06-06T12:14:26.527 に答える