2

Amazon EC2 の ubuntu 12.04 で apache 2.2 を使用しています。を使用して mod_rewrite を有効にしました

sudo a2enmod rewrite

で見ることができます

apache2ctl -M

今、次のように.htaccessコードを書きましたが、機能していません

# Redirect everything in this directory to "good.html"



    Options +FollowSymlinks
    RewriteEngine on
    RewriteRule .* good.html

これが /etc/apache2/sites-available/default http://pastebin.com/urNfmqanの内容です

LoadModule rewrite_module modules/mod_rewrite.sohttpd.conf に追加 すると、これwaiting [Thu Apr 11 18:44:12 2013] [warn] module rewrite_module is already loaded, skippingが表示され、それでもhtaccessが機能しません(apache2.2では、rewrite_modを有効にするためにhttpd.confを編集していないと思いますが、anubhavaのコメントに従って質問を変更しました)

4

2 に答える 2

0

これを試して:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /good.html [QSA,L]
</IfModule>

ルートでない場合は、リライト ルールの Base と 2 番目の要素をディレクトリに変更する必要があります。

于 2013-04-11T18:31:34.797 に答える
0

書き換えループが発生するようです。Apache リライトはルールを 1 回実行するのではなく、パスが要求されるたびに 1 回実行します。そのため、最初のロード時に に書き換え.*ますgood.html。次に、内部要求を作成しgood.htmlてルールを再処理し、再度書き直し、別の内部要求を無限に作成します。Revent's answer は、ファイルが存在するかどうかを確認することでこれを解決しようとします。存在するので、あなたindex.htmlは彼のルールに入りindex.htmlます。ファイルを削除index.htmlすると存在しない場合、書き換え条件が一致し、ルールは に書き換えgood.htmlます。ルールを再処理すると、ファイルが存在し、条件が失敗し、その後リダイレクトが停止します。

修正するには[L]、書き換えルールの後にフラグを追加して、ループを停止する必要があるこのルールの実行後にルールの処理を停止するように apache に指示します。それでも問題が解決しない場合は、 を追加して、リダイレクト後にルールが失敗する原因になっていないことrewriteCondを確認できます。request_filenamegood.html

于 2013-04-11T18:54:41.957 に答える