.htaccessファイルで書き換えが機能しない
アップデート6/26/18:これがApacheのリダイレクト、URLの変更、またはHTTPからHTTPSへのリダイレクトの重複である可能性があることを感謝します-Mod_Rewriteルールについて知りたいと思っていたが、尋ねることを恐れていたすべては、私のオリジナルで言及しましたその投稿に行ったことがあり、その投稿からテスターサイトを見つけたという投稿。私はその投稿を読みました。私はまだルールを書き直す初心者ですが、これが重複しているとは思いません。しかし、私は間違っている可能性があります。
.htaccess
ファイル内に新しい書き換えルールを設定しようとしています(下記)
SetEnv HTTPS on
<IfModule mod_rewrite.c>
RewriteEngine On
Options -Indexes
# Send would-be 404 requests to Craft
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/(favicon\.ico|apple-touch-icon.*\.png)$ [NC]
RewriteRule (.+) index.php?p=$1 [QSA]
Options - Autodiscover
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ autodiscover.php [NC,L]
</IfModule>
この投稿内でこのオンラインテスターを見つけました:Apacheでリダイレクト、URLの変更、またはHTTPからHTTPSへのリダイレクト-Mod_Rewriteルールについて知りたいが、尋ねることを恐れていたすべて
テスターへのリンク: .htaccessテスター
構成を実行すると、.htaccessの次の出力 デバッグ情報が表示されました。
私の質問:
- ' .htaccessのデバッグ情報'の出力に基づいてindex.phpが誤ってルーティングされていないことを確認するにはどうすればよいですか?
'.htaccessのデバッグ情報'の出力で、index.phpがautodiscover.xmlに追加されています。これは私が行う必要のあることではありません。 - 自動検出部分に関して失敗する原因となる構成の何が問題になっていますか?' .htaccessのデバッグ情報'は、構成の 'OR'が原因でのみ条件が満たされたと述べています。
これを見て、どんな種類の援助や説明も提供してくれた人に感謝します!:-)
回答
最後のルールには条件がないため、常に使用されます。
RewriteRule ^.*$ autodiscover.php [NC,L]
RewriteCond
ディレクティブは、ルール条件を定義します。1つ以上RewriteCond
をRewriteRule
ディレクティブの前に置くことができます。次のルールは、URIの現在の状態がそのパターンと一致し、これらの条件が満たされている場合にのみ使用されます。
したがって、すべての条件は、代わりに前のルールに関連しています。
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
また:
あなたは
RewriteEngine On
一度だけ必要です。Options
- Autodiscover
そのようなサーバー機能があった場合、構文エラーが発生します。