1

理由はわかりませんが、.htaccess ファイルで次の RewriteRule を使用すると、Internal Server Error 500 が発生します。mod_rewrite が有効になっているので、一日中解決策を探していました。

# Enable Rewriting  
RewriteEngine on  
# Rewrite user URLs 
RewriteRule ^(.*)/?$ users\/$1\/index.php
4

3 に答える 3

1

Apache のエラー ログ (多くの場合 という名前errors.log) には、動作しない理由に関する詳細情報が含まれている可能性があります。何らかの理由で正規表現が無効である可能性が高いです。自分でテストしてから、この投稿を編集します。

于 2012-08-12T22:38:22.933 に答える
1

ほとんどの場合、500 エラーはリダイレクト ループが原因です。

そのURL自体を含めるようにANYリクエストを書き換えて、書き換えループに陥ります。users/$1/index.php

書き換えルールを次のように変更してみてください。

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/users
RewriteRule ^(.*)/?$ users/$1/index.php

URI が で始まっていないことを確認することで/users、書き換えのループを回避できます。

于 2012-08-12T22:45:47.700 に答える
0

内部書き換えループがあります。書き換えエンジンは URI を受け取り、それをエンジンに渡し、結果の URI を取得します。それらが同じ場合、書き換えエンジンは停止します。それ以外の場合は、返された URI を受け取り、エンジンを介して戻します。これは、あなたが再び/users/something/index.php一致し、次のようになることを意味します: 、その後など.^(.*)/?$/users/users/something/index.php/index.php/users/users/users/something/index.php/index.phpusers/something/index.php/index.php

RewriteCondしたがって、URI が既に で始まっている場合に、URI が再書き換えされるのを防ぐために a を追加する必要がありますusers/

# Enable Rewriting  
RewriteEngine on  
# Don't rewrite if URI starts with "users"
RewriteCond %{REQUEST_URI} !users/
# Rewrite user URLs 
RewriteRule ^(.*)/?$ users\/$1\/index.php
于 2012-08-12T22:45:23.250 に答える