0

私の問題はRewriteRule、物理ディレクトリにアクセスしたときに、がまだ一致していることです。たとえば、Webルートの通常のディレクトリはhttp://a-domain.com/foo/どこにありますか。foo

.htaccessファイルには次のものがあります。

Options -Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .? index.php [L]

私の開発サーバーでは正常に動作しますが、ライブのWHM/CPanelサーバーでは動作しません。私は少し迷っています。

4

3 に答える 3

0

私は自分のcpanelWebサイトでこれをテストしましたが、あなたは正しいのですが、どこに問題があるのか​​がわかりました。デフォルトのファイル(インデックス)がないWebサイトのフォルダーにアクセスしようとすると、403 HTTPコードを担当するファイルにアクセスしようとしますが、ファイルが存在しないため、URLをに書き換えますindex.php

あなたがしなければならないのはあなたの.htaccessファイルの上にこれを追加することです:

ErrorDocument 403 /index.php?type=err&code=403
于 2012-02-09T10:57:13.713 に答える
0

自分の共有サービスをミラーリングするVMでこれを試しましたが、問題なく動作します。ディレクトリに別のもの.htaccessがありますか?fooもしそうなら、リライトエンジンはDOCROOTのあなたのものを無視し、代わりにこれを使用しますか?

于 2012-02-09T10:59:34.323 に答える
0

/foo/dirには基本認証があるため、存在しないファイルが含まれていると失敗してい%{REQUEST_FILENAME}ました/home/the_user/public_html/401.shtml。基本認証が機能したため、これが問題になるとは思いませんでした。認証プロンプトをキャンセルすると、標準の401ファイルが提供されていました。通常、これらのErrorDocumentファイルが欠落している場合、Apacheはさらに、ErrorDocumentを使用して要求を処理しようとしたときに、タイプ404のエラーが発生したと言います。

于 2012-02-23T07:37:20.543 に答える