まず、私はこれに似た質問がたくさんあることを知っています。私は見つけることができるすべてを読んだが、私が他のところで見ている解決法は私にとってはうまくいかないようだ。私は本当に誰かがここに私にいくつかの洞察力を与えることができることを望んでいる。ファイルの拡張子を隠してhttpsにリダイレクト
Apacheの.htaccess
ディレクティブを使用して、固有のページに強制的にsslを使用しようとしています。これらのディレクティブに加えて、私は.php
と.html
という拡張機能をマスクする書き換えをいくつか使用しています。
私はページ、https-test.html
を作成しました。私はそれがhttpsを使用していますので、そのページが、具体的に常にリダイレクトされますので、.html
がhttps://www.example.com/https-test
のように、剥ぎ取らされることをしかし、私は常にループで終わるように見えるしたいです。 6時間Apacheのドキュメントを読んで私を近づけましたが、私はまだ何かが欠けています。
以下は、私の注釈付きhtaccessファイルです。
RewriteEngine on
# If port is insecure...
RewriteCond %{SERVER_PORT} ^80$
# And requested URI is /https-test...
RewriteCond %{REQUEST_URI} ^(.*/)https-test$ [NC]
# Then point the server to the secure url:
RewriteRule . "https://www.example.com/https-test" [L,R]
# The next few lines try matching extensionless requests to .php files
# If the requested file is not a directory...
RewriteCond %{REQUEST_FILENAME} !-d
# And we CAN find a .php file matching that name...
RewriteCond %{REQUEST_FILENAME}\.php -f
# Then point us to that .php file and append the query string.
RewriteRule ^(.+)$ $1.php [L,QSA]
# These next few lines were added by the previous project owner
# They're supposed to redirect requests like /foo.html to /foo,
# But I suspect these might be the culprit
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)/$ /$1 [R=301,NE,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ /$1.html [NE,L]
# Next few lines are legacy SEO stuff, some pages were linked to as
# php but now are html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} .php$
RewriteRule ^(.*).php$ /$1.html [L,NE]
これは私のhtaccessのコードです。 Chromeのhttp://www.example.com/https-test
にアクセスすると、www.mysite.comがあなたを何度もリダイレクトしてしまいます。
ありがとうございます。あなたの変更は、物事をきれいにして理解しやすくします。 これらのルールは、 '.php'や' .html'の書き換えに有効です。残念ながら、私はまだ 'https:// www.example.com/https-test'のリダイレクトループを取得しています。私は本当にそれを得ることはありません。 – wrydere
301を302に変更してキャッシュをクリアし、それが役立つかどうかを確認します。それが動作すれば、それを301に戻すことができます。 –
キャッシュから離れて、別のブラウザを試しても、まだループが発生しました... – wrydere