web-dev-qa-db-ja.com

Apacheでは、.htaccessファイルはmod_rewritesのhttpd.confをオーバーライドしますか?

私のApachehttpd.confファイルでは、この宣言がVirtualHostタグ内にあります。

RewriteEngine On
RewriteCond %{HTTP_Host} !^www.shanestillwell.com$ [NC]
RewriteRule ^(.*)$ http://www.shanestillwell.com/$1 [L,R=301]

そして、これは私の.htaccessの中にあります

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

私のhttpd.confのルールは無視されているようです。 .htaccessのルールはhttpd.conf書き換えルールを消去していますか?

6
Shane Stillwell

通常、ディレクトリ内の.htaccessファイルの設定は、httpd.confファイルの設定を上書きします。 httpd.confファイルを編集して次の行を変更することで、この効果を無効にできます。

  <Directory ...> 
  AllowOverride all

    <Directory ...> 
    AllowOverride none

これにより、.htaccessファイルがhttpd.conf設定を上書きするのを防ぎます。したがって、.htaccessファイルの設定は効果がありません。

4
Manivasagan

<Directory ...>AllowOverride allがある場合、.htaccessファイルにあるものはすべて以前のルールに置き換わります。

httpd.confまたはドメインパスを指している限り、/またはvirtualhostにある可能性があります。

1
Prix