は、私はこの答えhttps://stackoverflow.com/a/16800319/1283556htaccessのサブドメインの一致のための以下のすべてのルールをスキップ
に問題を抱えている私の現在のhtaccess 301は、できるだけ少ないリダイレクトでwww.
とhttps://
を追加し、https://www.example.com
にexample.com
をリダイレクトします。私はサブドメインがm.example.com
であれば、それはwww.
またはhttps://
を追加したくない
ので、私は、この条件に合致し、何のルールを入れていないし、仕事と将来の状況をやって停止する[L]
フラグを使用して思いました。
RewriteEngine On
# Skip forcing www or https if the 'm' subdomain is being used for mobile
RewriteCond %{HTTP_HOST} ^m\. [NC]
RewriteRule - [L]
# Force www. and HTTPS
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule^https://www.%{HTTP_HOST}%{REQUEST_URI} [NE,R=301,L]
# Force HTTPS (www. was already there)
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
# Don't remap resources to the index processor, just add SSL
RewriteCond %{REQUEST_FILENAME} ^.*^.ico$$ [OR]
RewriteCond %{REQUEST_FILENAME} ^.*^.css$$ [OR]
RewriteCond %{REQUEST_FILENAME} ^.*^.js$$ [OR]
RewriteCond %{REQUEST_FILENAME} ^.*^.gif$$ [OR]
RewriteCond %{REQUEST_FILENAME} ^.*^.png$$ [OR]
RewriteCond %{REQUEST_FILENAME} ^.*^.jpg$$ [OR]
RewriteCond %{REQUEST_FILENAME} ^.*^.jpeg$$ [OR]
RewriteCond %{REQUEST_FILENAME} ^.*^.xml$$ [OR]
RewriteCond %{REQUEST_FILENAME} ^.*^.txt$$
RewriteRule ^(.*)$ https://$1 [R=301,L]
# Remap /page/filter/?query to /index.php?page=page&filter=filter&query
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?([^/]+)/*([a-zA-Z0-9-]*)/?$ /index.php?page=$1&filter=$2 [QSA]
上記の効果がある:
example.com »301» https://www.example.com
m.example.com »301» https://www.m.example.com
所望の効果がある:
example.com »301» https://www.example.com
m.example.com (do nothing, just serve content from example.com/mobile)
Serverバージョン:のApache/2.4.10(Unixの)はOpenSSL/1.0.1e -fips mod_bwlimited/1.4 Apache
私はこの仕事を得たことに注目する価値がある解決策として、INGのが、私はそれが回避策ではなく、リニアソリューションを検討:
RewriteEngine On
# Force www. and HTTPS
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} !^m\. [NC]
RewriteRule^https://www.%{HTTP_HOST}%{REQUEST_URI} [NE,R=301,L]
# Force HTTPS (www. was already there)
RewriteCond %{HTTP_HOST} !^m\. [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
# Don't remap resources to the index processor, just add SSL
RewriteCond %{REQUEST_FILENAME} ^.*^.ico$$ [OR]
RewriteCond %{REQUEST_FILENAME} ^.*^.css$$ [OR]
RewriteCond %{REQUEST_FILENAME} ^.*^.js$$ [OR]
RewriteCond %{REQUEST_FILENAME} ^.*^.gif$$ [OR]
RewriteCond %{REQUEST_FILENAME} ^.*^.png$$ [OR]
RewriteCond %{REQUEST_FILENAME} ^.*^.jpg$$ [OR]
RewriteCond %{REQUEST_FILENAME} ^.*^.jpeg$$ [OR]
RewriteCond %{REQUEST_FILENAME} ^.*^.xml$$ [OR]
RewriteCond %{REQUEST_FILENAME} ^.*^.txt$$
RewriteRule ^(.*)$ https://$1 [R=301,L]
# Remap /page/filter/?query to /index.php?page=page&filter=filter&query
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?([^/]+)/*([a-zA-Z0-9-]*)/?$ /index.php?page=$1&filter=$2 [QSA]
正常に動作するはずです。ブラウザのキャッシュを完全にクリアして再テストします。 – anubhava
htaccessは実際にクライアントに送信されないので、サーバーによって行われない限り実際にはキャッシュされないという印象を受けていますが、これまで経験したことがなく、サーバーの内部キャッシュをクリアする方法もわかりません(それが本当にあなたが示唆しているものならば)。いずれにしてもブラウザのキャッシュをクリアしましたが、まだhttps://www.m.example.comにリダイレクトされています –
Apacheのバージョンは何ですか? –