Mod_rewriteの設定中にBadRequestエラーを乗り越えることができないようです。私はしばらくの間試みてきたので、これが私が持っているものです。
アクセスしようとしているURLは次のとおりです。
gordons.local/brewCalc
私が見たいページは
gordons.local/index.php?page=brewCalc
これが私の書き換えルールです:
RewriteEngine on
RewriteLog /var/www/gordons.com/logs/rewrite.log
RewriteRule ([^/]+)/?$ index.php?page=$1 [L]
正規表現ツールを使用しましたが、 このツール ですが、最終的に次のようなページが表示されます。
Bad Request
Your browser sent a request that this server could not understand.
Additionally, a 400 Bad Request error was encountered while trying to use an ErrorDocument to handle the request.
Apache/2.2.12 (Ubuntu) Server at gordons.local Port 80
また、アクセス、エラー、または書き換えログに情報がありません。
編集:私の書き換えルールは私のvhostファイルにあります。 (/etc/Apache2/sites-available/gordons.local)
誰かがここにいることに気付いた場合に備えて、私の問題は、交換前の先頭のスラッシュがないことでした。
RewriteRule ([^/]+)/?$ index.php?page=$1 [L]
になるはずだった
RewriteRule ([^/]+)/?$ /index.php?page=$1 [L]
Grrrr..。
Apacheのerror.logが表示されている場合は、実際のエラーを確認できます。上記のルールを.htaccessファイルに入れようとしていて、RewriteLog
が.htaccessファイルで許可されていない可能性があります。また、RewriteRuleは意図した以上にリダイレクトします。したがって、RewriteLog
をコメントアウトし、RewriteRuleを次のようにすると、機能するはずです。
RewriteEngine On
RewriteBase /
# request is not for a file
RewriteCond %{REQUEST_FILENAME} !-f
# request is not for a directory
RewriteCond %{REQUEST_FILENAME} !-d
# forward to index.php
RewriteRule ^([^/]+)/?$ index.php?page=$1 [L,QSA,NC,NE]