2017-05-09 16 views
1

私のphpinfo()コマンドで、mod_rewriteが有効になっていることを示していますが、私はまだ自分の "404"ページの代わりにApacheのデフォルトのページが見つかりません。ここに私の.htaccessがある:mod_rewriteが有効になっていてもなぜ動作しないのですか?

enter image description here

EDIT

おかげアガマ:

RewriteEngine on 
RewriteRule ^(.*)$ test_modrw.php 

ここでmod_rewriteを有効になっているが示しするphpinfoでセクションです。しかし、まだ1つの問題は、私はまだルートに直接ファイルにアクセスすることができます。例:

example.com/test_file.php 

.htaccessではなく、rootにもあるindex.phpにすべてをルーティングする代わりにアクセスできます。ここに私の.htaccessがある:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 

EDIT

君たちは、この質問だけでなく、私の他の人をupvoteすることはできますか?そう。彼らは私の質問が少ないupvotesのために低品質だと思うので、私を禁止しています。

+3

あなたは 'AllowOverride'のApache confファイルを更新しましたか? –

+1

仮想ホストの設定を –

+1

に '/ etc/apache2/sites-available'または'/etc/httpd/conf.d/'に表示してください。ここ –

答えて

1

見つける(AllowOverrideが必要<Directory>ディレクティブでallなくnoneに設定されていることを確認することですあなたの/etc/apache2/sites-available/etc/httpd/conf.d/

Options Indexes FollowSymLinks 
AllowOverride All 
Order allow,deny 
allow from all 
+0

Daveとの仕事がうまくいっている! –

+0

@JeremyHarrisありがとう –

+0

これはの場所にありますか? – Dave2345

0

良い答えでアクセスを許可するために、以下のようconfに変更してください1つはあなたがサービスするファイルに対応しています)。あなたの.htaccessファイルが設定から多くのオプションを上書きすることができるように意識してください。

あなたが行っていることがわかっている場合(別のユーザーがファイルをアップロードできるサーバーでは、変更したくないオプションを変更する可能性があるので、そうしないでください)あなたがこのサーバー上のサイトを運営する唯一のサイトなら、すべていいです。

あなたはセキュリティを意識している場合、および/または他のユーザーが何ができるのか、物事を書き換えるために、あなただけの変更ができAllowOverride noneAllowOverride FileInfo Options

FileInfoは、書き換えルールを有効にし、Optionsは何が続く可能となります。

次に、あなたの.htaccessファイルで、ちょうど先頭に追加します。あなたはFollowSymLinksオプションが有効になっていることを確認します、それを行うことで

Options +FollowSymLinks -MultiViews 

を、コメントで指摘したようにMultiViewsが(無効になっています、 .en.php.fr.php、およびMultiviewsのような二重の拡張子があるときは、デフォルトのApache設定とは関係なく、特定のシナリオでルールを書き換える際に問題が発生します。

これは、サーバーレベルよりもフォルダ/仮想ホストを制御する方がずっと優れています。

それは、不要なファイルを一覧表示するためのオープンドアだと私はまた、非常に(基本的には、それがインデックスファイルを持たない任意のフォルダの内容を示している)メイン設定ファイルから完全Indexesを無効にすることをお勧めします。

関連する問題