Webサイトリダイレクトでエラーをいくつか試しましたが、どうにかしてWebサイトリダイレクトを実行しましたが、Firefoxでは断続的に機能しますが、IEではまったく機能しません。私はなんとかFirefoxですべてのキャッシュをクリアして再試行しましたが、動作しますが、奇妙なことにその後は動作しません。その時点では、ファイルに変更を加えていないことを確認しました。誰かが以前に何か考えやこれに直面したことがありますか?私のウェブサイトが2分のように幸せだったとしても、最終的にリダイレクトされて、その後リダイレクトされないことが判明したので、とてもうれしかったです。 :(( http://example.com 入力するとリダイレクトするだけです https://www.example.com 以下にリダイレクトします.htaccessファイル:
RewriteEngine On
#Options +FollowSymLinks
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_Host} ^example\.com$[OR]
RewriteCond %{HTTP_Host} ^www\.example\.com$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
以下は私のログです:
init rewrite engine with requested uri /
pass through /
[perdir D:/wamp64/www/example/] strip per-dir prefix: D:/wamp64/www/example/ ->
[perdir D:/wamp64/www/example/] applying pattern '.*' to uri ''
[perdir D:/wamp64/www/example/] RewriteCond: input='off' pattern='!on' => matched
[perdir D:/wamp64/www/example/] RewriteCond: input='www.example.com' pattern='^www\\.example\\.com$' => matched
[perdir D:/wamp64/www/example/] rewrite '' -> 'https://www.example.com/'
[perdir D:/wamp64/www/example/] explicitly forcing redirect with https://www.example.com/
[perdir D:/wamp64/www/example/] escaping https://www.example.com/ for redirect
[perdir D:/wamp64/www/example/] redirect to https://www.example.com/ [REDIRECT/301]
VPNからログアウトしたときにのみWebサイトがリダイレクトされることもわかりました(VPNに接続して、リダイレクトに行った情報を修正または取得するためにサーバーに接続できるようにする必要があります)
以下は、.htaccessファイルに追加したアイテムです。
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_Host} ^example\.com$
RewriteCond %{HTTP_Host] ^www\.example\.com$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
以下は私のhttpd-vhosts.confです:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot "d:/wamp64/www/example"
<Directory "d:/wamp64/www/example/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Order allow,deny
Allow from all
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
</Directory>
</VirtualHost>
私のSSL証明書はhttpd-ssl.confで構成されたので、httpd-vhosts.confをVirtualHost *:80としてポイントします。以下は、httpd-vhosts.confです。
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot "d:/wamp64/www/example"
<Directory "d:/wamp64/www/example/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Order allow,deny
Allow from all
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
</Directory>
</VirtualHost>
以下は[OR]を追加して.htaccessを更新するものです。
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_Host} ^example\.com$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
そして、以下は私が得たログです:
strip per-dir prefix: D:/wamp64/www/example/ ->
applying pattern '.*' to uri ''
RewriteCond: input='off' pattern='!on' => matched
rewrite '' -> 'https://www.example.com/'
explicitly forcing redirect with https://www.example.com/
escaping https://www.example.com/ for redirect
redirect to https://www.example.com/ [REDIRECT/301]
ブラウザでもう一度試しましたが、リダイレクトされませんでした。私もFirefoxでデバッグしようとしています、そして私が得たホストはexample.comです
これは私が削除したものです[OR]
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_Host} ^example\.com$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
ログ:
RewriteCond: input='off' pattern='!on' => matched
RewriteCond: input='www.example.com' pattern='^example\\.com$' => not-matched
私のリダイレクトが機能していることを教えてください。これは何ヶ月も働いていて、今は考えがわからなくなっています(私の愚かな間違いによるものではないことを願っています...祈っています!)。よろしくお願いします!
私はあなたが実際にこの状態を望んでいないと信じています:
RewriteCond %{HTTP_Host} ^www\.example\.com$
.htaccess
バージョンにも適用されるhttps://www
からのものであるとすると、それ自体に無限リダイレクトループが発生するためです。
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
欠けているスペース文字だと思います。これを変更してください:
RewriteCond %{HTTP_Host} ^example\.com$[OR]
これに:
RewriteCond %{HTTP_Host} ^example\.com$ [OR]
ログファイルのエントリは、 http://www.example.com が https://www.example.com/ に正常に書き換えられたことを証明しました。彼らは http://example.com について何も証明しませんでした。スペース文字を追加すると、後者が修正されます。
の代わりに mod_rewrite
Virtualhostの定義では、次のようなものを使用する必要があります。
ServerName www.example.com
ServerAlias example.com
Redirect permanent / https://www.example.com/
Apache httpd documentation によると。
mod_rewriteは、他の代替手段が必要であることが判明した場合、最後の手段と見なす必要があります。より簡単な代替手段がある場合にそれを使用すると、構成が混乱しやすく、壊れやすく、保守が困難になります。