-1

Zend Framework アプリケーションを作成しました。ファイルを読み取るように構成することroutes.iniで、デプロイ後のアプリケーションはどのルートにも移動せず、デフォルト ルートのみが機能します。このアプリケーションには合計 4 つのルートがあり、どれも機能していません。Apache がNot Foundエラーを表示しています。

私は.htaccessファイルを見て、それは完璧で、私のローカルでは正常に動作しています。権限も確認しました。の読み取りおよび書き込み権限を持っていますwww-data。Apache URL 書き換えモジュールもチェックしました。

私はこれをもう一度やってみました:

sudo a2enmod rewrite

まだ同じ問題。

私のApacheエラーログは、ファイルが存在しないと言っています。
どこが間違っているのか教えてください。

4

2 に答える 2

1

何時間も調査した後、apachevhostファイルに非常にマイナーで機密性の高い間違いがあったことに気付くことができました。

私のエントリーはこんな感じでした

<Directory /var/www/your_project>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

しかし実際には、私のエントリはmssbのようになります。

<Directory /var/www/your_project>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory

私は経験豊富なウェブマスターではないので、[なし]に設定されたAllowOverideオプションという簡単なことに気づきませんでした。

私が間違っていた場所を見つけるために、今日Coreapaceのドキュメントを参照しました。

.htaccessファイルを選択しない理由は次のとおりです

AllowOverideディレクティブがNoneに設定されている場合、.htaccessファイルは完全に無視されます。この場合、サーバーはファイルシステム内の.htaccessファイルを読み取ろうとさえしません。

このディレクティブがAllに設定されている場合、.htaccessコンテキストを持つすべてのディレクティブが.htaccessファイルで許可されます。

私は個人的に、この問題の解決策全体を投稿して、将来同様の問題に直面する可能性のある他の人を助けるように感じました

もう一度、この投稿に返信してくれてありがとうございます

于 2012-09-07T15:39:48.690 に答える
0

次の手順でmod_rewriteを試してください

sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/

sudo gedit /etc/apache2/sites-enabled/000-default

次のコードを追加します

<Directory /var/www/your_prject_name>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    allow from all
    # This directive allows us to have apache2's default start page
    # in /apache2-default/, but still have / go to the right place
    # Commented out for Ubuntu
    #RedirectMatch ^/$ /apache2-default/
 </Directory>

その後、サーバーを再起動します

sudo /etc/init.d/apache2 restart
于 2012-09-07T06:40:09.330 に答える