htaccessはURLからセグメントを削除し、httpsとwwwにリダイレクトします
Deployerを使用してCraftCMSサイトを共有ホスティングアカウントにデプロイしています。
最新のデプロイメントには、domain.com / current / publicからアクセスできます。
私の.htaccessファイルは次のようになります。これはURLからcurrent / publicを取り除き、httpsを強制します。
RewriteEngine on
RewriteRule ^(.*)$ current/public/$1
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L]
wwwを使用するには、すべてのURLもリダイレクトする必要があります
.htaccessを調整してすべてのURLにwwwを強制するにはどうすればよいですか?
***更新***
私は以下で上記を解決することができました:
RewriteEngine on
RewriteRule ^(.*)$ current/public/$1
RewriteCond %{HTTP:X-Forwarded-Proto} !=https [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+) [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L]
example.com/adminにアクセスすると、example.com / current / public / adminにリダイレクトされます。htaccessファイルを調整して管理URLから「current / public」を削除するにはどうすればよいですか?
回答
1 anubhava
あなたhttp->https
とwww
、それがために他のルールに代わりに書き換えられたURIの元URIに動作するように追加ルールは一番上のルールでなければなりません。
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !=https [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+) [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L,NE]
RewriteRule ^(.*)$ current/public/$1 [L]
このルールをテストする前に、必ずブラウザのキャッシュをクリアしてください。
また、このリダイレクトルールを/current/public/.htaccess
:に追加します。
RewriteCond %{THE_REQUEST} /current/public/(\S+) [NC]
RewriteRule ^ /%1 [R=301,L,NE]