SSL.htaccess-シンプルなQ

Nov 13 2020

私は本当にこのファイルが嫌いです...私はこれを理解しようとして6.5時間を費やしました、そして私のADHD失読症ではそれはただ不可能です!! SSL用に購入したドメインがあります(現在、WWWのSSLが起動するのを待つ必要がありますが、今のところ、WWWのないドメインは機能します。例:

https://tomas.com

私がルートに持っている.htaccessは現在次のとおりです。

RewriteEngine On
RewriteCond %{HTTP_HOST} tomas\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://tomas.com/$1 [R,L]

そして、上記のコードは実際にSSLをアクティブにします。これは良いことです。重要なのは、ルートドメインにいくつかのファイルがありますが、そのうちの1つは次のとおりです。

hello.php (場所: "tomas.com/hello.php")

私が行く場合: http://tomas.com/helloそのファイルを表示したい(アドレスバーに「http://tomas.com/hello」と表示する必要があります)。SSLの前に、私は以下のコードを持っていました、そしてそれは機能しました(しかしもう機能しません):

RewriteRule ^([^/]*)/?(.*)$ $1.php

.htaccess全体がどのように見えるかについて何か考えはありますか?:/

また、wwwを使用しないように強制しようとしています(使用する場合は、WWW以外のURLにリダイレクトする必要がありますよろしくお願いします!!!!!!!!!!!!

回答

1 MrWhite Nov 14 2020 at 03:02

SSLの前に、私は以下のコードを持っていました、そしてそれは機能しました(しかしもう機能しません):

RewriteRule ^([^/]*)/?(.*)$ $1.php

これが以前にどのように「機能した」かはわかりませんが、それ自体では完全ではなく、単に.php拡張機能を追加するだけです。hello.phpパターンにも一致するため、書き換えループを防ぐための何かが必要です^([^/]*)/?(.*)$

HTTPからHTTPSにリダイレクトした、代わりに次のことを試してください。

RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule (.*) $1.php [L]

これは、.php内部で書き換える前に、まずファイル拡張子の付いたファイルが存在することを確認します。

または、他のURL書き換えを行っていない場合は、代わりにMultiViewを有効にすることもできます。たとえば、ファイルの先頭:

Options +MultiViews

これはmod_negotiationを使用して、基本的にすべてに対して拡張子のないURLを有効にします