1

私の .htaccess ファイルはルートにあり、複数の Web サイトにサービスを提供しています。

RewriteEngine ブロックが含まれています。

ホストが (www) www.example.com でない場合、Apache がルールを評価するのを防ぎたい:

RewriteEngine On
RewriteBase /

#If this is not about example.com, it is probably about our other websites, exit here
RewriteRule %{HTTP_HOST} !^(www|)example.com$ - [L]

ただし、これにより 500 内部エラーが発生します。おそらく {HTTP-HOST} の使用が RewriteRule ディレクティブであるためです。

そこで今、次のようなことを考えています。

RewriteCond %{HTTP_HOST} !^(www|)example.com
RewriteRule (.*) $1 [L]

しかし、これには Apache の書き直しが必要であり、パフォーマンスが低下します。

誰でも提案はありますか?

4

1 に答える 1

2

ホストが(www) www.example.comでない場合、Apache がルールを評価するのを防ぎたい

とにかく mod_rewrite を使用しています。それを行う方法は、それがwwwでない 場合はルールをスキップすることです。したがって、それが wwwであることを確認する必要があります。

ルート ディレクトリの .htaccess ファイルでは、次のように動作するはずです。

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)            /$1            [NC,L]

それはあなたが試したことの反対です。

オプション

Arkanon の提案に従って、このオプションはさらに多くのドメインがあることを想定し、選択したドメイン (example.com) のみにルールを適用するかどうかに関係なく適用します。www.

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com [NC]
RewriteRule ^(.*)             /$1              [NC,L]
于 2013-03-24T11:04:37.087 に答える