SSL.htaccess-シンプルなQ
私は本当にこのファイルが嫌いです...私はこれを理解しようとして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にリダイレクトする必要があります)よろしくお願いします!!!!!!!!!!!!
回答
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を有効にします。