Fedora 13でLAMPサーバーを実行していますが、問題なく動作しています。ただし、「。htaccess」ファイルを現在のサイトのdocrootフォルダーに追加しただけで、完全に無視されています。
私はこれを含む半ダースの異なるテストを試しました:
RewriteEngine on
RewriteBase /
RewriteRule ^.*$ index.php
しかし、画像と他のすべてのページは正常に読み込まれ、存在しないファイルは404のままです。私もこれを試しました:
order deny,allow
deny from all
しかし、すべてのページはまだ正常に読み込まれます。繰り返しになりますが、.htaccessファイルは100%無視されます。
Virtualhostレコードを/etc/httpd/conf.d/virtual.confに置きます。次のようになります。
NameVirtualHost *
<VirtualHost *>
ServerName intranet
DocumentRoot /var/www/default
<Directory "/var/www/default">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *>
ServerName ourwebsite.com
DocumentRoot /var/www/html/ourwebsite.com/docroot
<Directory "/var/www/html/ourwebsite.com/docroot">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
他に何が原因でサーバーが.htaccess
ファイルを完全に無視する可能性がありますか?
編集:
私は.htaccessファイルを上記に変更して、私の変更が無視されていることをよりよく示しています。実稼働サーバーでまったく同じ.htaccessファイルを試したところ、問題なく動作したことに注意してください。
編集2:
はい、新しい情報があります。テストのために、私はすべての "AllowOverride"ディレクティブをAllowOverride All
に一時的に変更しました。最初のディレクトリエントリが他のすべてのエントリを圧倒するように見えることを理解しました。
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
これをAllowOverride All
に変更すると、.htaccessファイルが有効になります。それは私の設定ファイル内の他のすべてのAllowOverride All
ディレクティブが無視されているようです!
何を与える?
信じられない。これが開発サーバーだと言ったことを覚えていますか?ええ..さて、これが私の仮想ホストエントリの実際の外観です。
<VirtualHost *>
ServerName dev.ourwebsite.com
DocumentRoot /var/www/html/dev.ourwebsite.com/docroot
<Directory "/var/www/html/ourwebsite.com/docroot">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
あなた見えますか?まあ私はしませんでした。私は忘れました「ディレクトリ」エントリをourwebsite.comではなくdev.ourwebsite.comに変更することで、すべての違いが生まれました。ディレクトリが存在しなかった場合、Apacheがエラーをスローするだろうと思いました。ただし、これはDocumentRootディレクティブにのみ適用されます。一致ベースです。つまり、着信要求と一致する場合にルールを適用しますが、それ以外の場合は、マジックユニコーンでAllowOverrideを指定してもかまいません。
これを他の人が見に来た人への教訓にしましょう-他のすべてが失敗した場合、全能の誤植を検討してください。
Virtualhosts宣言の上の「httpd.conf」にある他の「AllowOverride None」がないか確認してください。おそらく、Docrootに "AllowOverride None"があります。
私はこれを新しいサーバーで使用しましたが、最終的にはmod-rewriteがデフォルトで有効になっていないことに気付きました。
ln -s /etc/Apache2/mods-available/rewrite.load /etc/Apache2/mods-enabled/rewrite.load
3つの推測:
order deny, allow
の.htaccess
行のコンマの後に実際にスペースがありますか? Apacheはそれが好きではありません。 F13での私にとっては、500を獲得しました。
AccessFileName
ディレクティブはどこにありますか?
Selinuxを使用している場合、ファイル(ls -lZ
)の正しいコンテキストはありますか?