私は航空機のWebサイトで作業しており、.htaccessファイルを使用してURLを書き換えて、SEOに適したものにしています。ファイルは次のとおりです。
AddType application/x-httpd-php /(.*)
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^general-aviation-models/(.*)/(.*) /models.php?mfg=$1&model=$2
RewriteRule ^general-aviation/(.*)/(.*) /general.php?page=$1&sub=$2
RewriteRule ^general-aviation/(.*) /general.php?page=$1
RewriteRule ^general-aviation /index.php
RewriteRule ^military/(.*) /military.php?page=$1
RewriteRule ^military-models/(.*)/(.*) /military-models.php?mfg=$1&model=$2
RewriteRule ^military-models/(.*) /military-models.php?mfg=$1
RewriteRule ^cart/ /cart.php
RewriteRule ^contact/ /contact.php
RewriteRule ^commercial/(.*)/(.*) /commercial.php?page=$1&sub=$2
RewriteRule ^commercial/(.*) /commercial.php?page=$1
RewriteRule ^commercial/ /commercial.php
RewriteRule ^links/ /links.php
RewriteRule ^about/ /about.php
RewriteRule ^tour/(.*) /tour.php?page=$1
RewriteRule ^tour/ /tour.php
ExpiresDefault "access plus 10 years"
AddOutputFilterByType DEFLATE text/plain
これは、* nixベースのサーバーとローカル開発環境のMAMPで機能しましたが、Mac OSXサーバーに移行すると、いくつかの(すべてではない)ルールが失敗します。特に、これらは失敗します。
RewriteRule ^military-models/(.*)/(.*) /military-models.php?mfg=$1&model=$2
RewriteRule ^military-models/(.*) /military-models.php?mfg=$1
RewriteRule ^commercial/(.*)/(.*) /commercial.php?page=$1&sub=$2
RewriteRule ^commercial/(.*) /commercial.php?page=$1
その他の注意事項:
- mod_rewriteモジュールは正常にロードされます(phpinfo()のロードされたモジュールセクションに表示されます)
- httpd.confファイル(適切なタグ内)にAllowOverrideAllがあります
- 私のサーバーAPIはApache2.0ハンドラーです
私はしばらくの間SOを見回しましたが、あまり見つかりませんでした。このSOの質問で最初の解決策を試しましたが、追加された行によってログにこのエラーが発生しました。
/my_specific/document_root/.htaccess: DocumentRoot not allowed here
助言がありますか?
アップデート:
Apacheのマルチビュー機能がオンになっていて、とにかく私のリライターのほとんどで機能するようになりましたが、それらをオーバーライドして、リストされている4つの失敗を引き起こしました。私がしなければならなかったのは、これを私のhtaccessファイルの先頭に追加することだけでした。
Options -MultiViews