.htaccessファイルで書き換えが機能しない

Jun 21 2018

アップデート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の次の出力 デバッグ情報が表示されました。

私の質問:

  1. ' .htaccessデバッグ情報'の出力に基づいてindex.phpが誤ってルーティングされていないことを確認するにはどうすればよいですか?
    '.htaccessのデバッグ情報'の出力で、index.phpがautodiscover.xmlに追加されています。これは私が行う必要のあることではありません。
  2. 自動検出部分に関して失敗する原因となる構成の何が問題になっていますか?' .htaccessデバッグ情報'は、構成の 'OR'が原因でのみ条件が満たされたと述べています。

これを見て、どんな種類の援助や説明も提供してくれた人に感謝します!:-)

回答

1 EsaJokinen Jun 22 2018 at 14:04

最後のルールには条件がないため、常に使用されます。

RewriteRule ^.*$ autodiscover.php [NC,L]

RewriteCondディレクティブは、ルール条件を定義します。1つ以上RewriteCondRewriteRuleディレクティブの前に置くことができます。次のルールは、URIの現在の状態がそのパターンと一致し、これらの条件が満たされている場合にのみ使用されます。

したがって、すべての条件は、代わりに前のルールに関連しています。

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

また:

  • あなたはRewriteEngine On一度だけ必要です。

  • Options- Autodiscover そのようなサーバー機能があった場合、構文エラーが発生します。