0

私は航空機の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
4

2 に答える 2

4

Apacheのマルチビュー機能はデフォルトでオンになっていて、とにかく私のリライターのほとんどで機能することになりましたが、それらをオーバーライドして、リストされた4つの失敗を引き起こしました。私がしなければならなかったのは、これを私のhtaccessファイルの先頭に追加することだけでした。

Options -MultiViews
于 2012-02-23T17:18:32.613 に答える
0

これが私があなたの書き直しを変える方法です:

AddType application/x-httpd-php /(.*)
Options +FollowSymLinks
RewriteEngine On

RewriteRule ^/?$ /index.php [NC,QSA,L]
RewriteRule ^(tour|cart|links|about|military(-models)?|general-aviation|commercial|contact)/?$ /$1.php [NC,QSA,L]

RewriteRule ^general-aviation-models/([^/]+)/(.*) /models.php?mfg=$1&model=$2 [NC,QSA,L]
RewriteRule ^general-aviation-models/(.+) /models.php?mfg=$1 [NC,QSA,L]

RewriteRule ^general-aviation/([^/]+)/(.*) /general.php?page=$1&sub=$2 [NC,QSA,L]
RewriteRule ^general-aviation/(.+)  /general.php?page=$1 [NC,QSA,L]

RewriteRule ^military-models/([^/]+)/(.*) /military-models.php?mfg=$1&model=$2 [NC,QSA,L]
RewriteRule ^military-models/(.+) /military-models.php?mfg=$1 [NC,QSA,L]

RewriteRule ^commercial/([^/]+)/([^/]+) /commercial.php?page=$1&sub=$2 [NC,QSA,L]
RewriteRule ^commercial/(.+)  /commercial.php?page=$1 [NC,QSA,L]

RewriteRule ^military/([^/]+) /military.php?page=$1 [NC,QSA,L]
RewriteRule ^tour/(.+)  /tour.php?page=$1 [NC,QSA,L]

ExpiresDefault "access plus 10 years"
AddOutputFilterByType DEFLATE text/plain

ちなみに申し訳ありませんが、デザインにはまだまだ改善の余地があります。

一般に、人々はすべてをリダイレクトして、PHPコードでindex.phpデコードします。URL

考えてみてください;)

于 2012-01-28T09:45:16.187 に答える