2017-05-29 14 views
1

訪問:.htaccessのルール500内部サーバーエラー

  • www.example.com

  • www.example.com/page

  • www.example.com/index.php?p=page

ルール:/そうを追加するために必要な

RewriteEngine On 
RewriteRule ^([^/]*)$ /index.php?p=$1 [L] 
+0

サーバーのエラーログを確認します。エラーの原因がそこにあります。 'mod_rewrite'ディレクティブを使用するために必要なオーバーライド(つまり、' FileInfo')がない可能性があります。(実際には 'mod_rewrite'は有効になっていません) – Phil

答えて

-1

RewriteEngine On 
RewriteRule ^/([^/]*)$ /index.php?p=$1 [L] 
+1

' .htaccess'で 'RewriteRule'の先頭にスラッシュを追加します。 _pattern_は問題を「修正」しません。エラーが消えるだけです。これで何も起こらないからです。 – MrWhite

0
RewriteRule ^([^/]*)$ /index.php?p=$1 [L] 

これはリライトループ(したがって、あなたの500エラー)になります。書き換えループを防止する1つの方法は、書き換えようとする前にURLにpというURLパラメータが含まれていないことを確認することです。例:

RewriteCond %{QUERY_STRING} !^p= 
RewriteRule ^([^/]*)$ /index.php?p=$1 [L] 
+0

これはどのようにループを作りますか? 'L'フラグはそれが起こらないようにしなければなりません – Phil

+0

' .htaccess'では 'L'フラグは現在の処理を止めます。プロセスは再び開始され、URLが変更されずに通過するまで続きます。 – MrWhite

+0

これは内部書き直しです。別のリクエストはありません。私はあなたの仮定をテストする必要があると思う – Phil