2013-11-01 9 views
8

スクリプトに問題があります。それは仕事に必要なhtaccessファイルで動作しません。ここにhtaccessの内容を示します。私はWampのlocalhostにインストールしようとしています。コードは次のとおりです。ワンプ付きローカルホスト上の.htaccessのRewriteEngineによる内部エラー

#AddType x-mapp-php5 .php 
#AddHandler x-mapp-php5 .php 

RewriteEngine ON 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php/$0 [PT,L] 
#RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA] 

Options All -Indexes 

私はこれを削除した場合、それは動作します:

RewriteEngine ON 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php/$0 [PT,L] 
#RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA] 

しかし、この方法でスクリプトの負荷をが、すべてのページショーのエラー404は、この問題を解決する方法はあります?

+0

したがって、 'Options All -Indexes'は500エラーを引き起こしていますか?あなたはあなたのApache error.logをチェックできますか? – anubhava

答えて

16

書き換えモジュールが読み込まれていないようです。あなたのhttpd.confファイルを探して、この行(またはそれに類するもの)のコメントが外されていることを確認してください。

LoadModule rewrite_module modules/mod_rewrite.so 
+0

私はこれを試しましたが、同じエラーが発生しました。 (Ubuntu 16.04。Django 1.10。WSGI。) – Deleet

+0

しかし、これはうまくいきました。 http://stackoverflow.com/a/18161348/3980197私はそれをシェルコマンドで有効にできますが、設定ではできません。 – Deleet

+0

この変更を行った後で、Apacheサーバーを再起動することを忘れないでください! 'sudo apachectl restart'またはあなたが何をコマンドしていてもかまいません。 – vars

1

私は同じ問題がありました。行のコメントを解除するには、行の先頭にある#を削除してください。 LoadModule rewrite_module modules/mod_rewrite.so

Wampで私のために働きました。

httpd.confファイルのディレクトリ:C:あなたがApacheのリライトモジュールがロードされてWAMPを\ビン\ \ apacheの\ apache2.4.9 \ confに

2

チェック。

wamp_manager - > apache - > modulesにアクセスして、リスト内のrewrite_moduleを探します。

TICKの横にTICKがない場合は、クリックします。 Apacheはバウンスされます(停止、開始)。再試行する。

rewiteエンジンは、必要なモジュールがロードされていないと動作しません。

0

これは私にとって問題を解決した1つの解決策です。書き換えモジュールは常に有効になっていて、IfModuleのrewrite_moduleで使用され、アクセス許可が与えられ、.htaccessの内容は問題ありませんでしたが、書き換えモジュールを使用しようとしても500エラーでした。

In httpd.conf by default: 

This is a source of a 500 error if you try to use rewrite in .htaccess in some sub directory. 

` 
# Deny access to the entirety of your server's filesystem. You must 
# explicitly permit access to web content directories in other 
# <Directory> blocks below. 
# 

    <Directory /> 
     AllowOverride none 
     Require all denied 
    </Directory> 
`  

したがって、特定のディレクトリにあるrewriteモジュールで.htaccessを使用することができます。そのディレクトリにブロック<directory>を追加します。ディレクトリブロックをコピーして貼り付ける場合は、コピーするブロックの意図が、それを適用するディレクトリに対して正しいことを確認する必要があります。

私の意図では、このブロックは403エラーを引き起こしますが、500エラーを取り除きます。

<Directory "c:/Apache24/htdocs/store"> 
    AllowOverride All 
    Options None 
    Require all granted 
</Directory> 


Changing to this solved the issue: 

<Directory "c:/Apache24/htdocs/store"> 
    AllowOverride All 
    Require all granted 
</Directory> 

これは、この問題がよく見られるが、これらのスレッドではめったに解決されないと考えられます。私が単に別のブロックをコピーしたり、自分のブロックをタイプしたり、自分が行っていたことを理解していれば、これは問題ではないでしょう。

私はこれが誰の問題も解決するとは言えませんが、私たちが他の人の問題を解決して実行すると嫌いです。私の間違いをした人にとって、これは答えです。

関連する問題