web-dev-qa-db-ja.com

常にwwwなしでhttpsにリダイレクトする

ウェブサイトを持っていますが、最近SSL証明書をインストールしました。 SSLをwww以外にも適用できるようにしたので、サイトへのすべてのリンクがwwwなしで常に安全なサイトにリダイレクトされるようにします。

さらに、バックエンドにWHMCSがあり、example.com/whmcsページをexample.com/client-portalにリダイレクトします。whmcsとリンクするサードパーティのプラグインがあるためです。

.htaccessファイルに何を挿入する必要があり、どのフォルダーにファイルを挿入する必要がありますか?ルートからすべてを指定できますか?これが当てはまる場合、WHMCSにこれに満足させるにはどうすればよいですか?

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_Host} ^(?:www\.)?(.*)$ [NC] 
RewriteRule (.*) https://%1%{REQUEST_URI} [L,R=301]

編集

良いニュースは、問題の最初の部分を解決したことです。すべてのURLがwww以外のhttps Webサイトにリダイレクトされるようになりました。この問題を解決したコードは@John Condeによって提供されました-ありがとうJohn!

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_Host} ^(?:www\.)?(.*)$ [NC]
RewriteRule (.*) https://%1%{REQUEST_URI} [L,R=301]

次の目標は、example.com/whmcsexample.com/client-portalにリダイレクトすることです。

...ただし、example.com/whmcs/adminexample.com/client-portal/adminにリダイレクトしません。つまり、/whmcs/adminはリダイレクトすべきではありません。

次のソリューションを試しましたが、成功しませんでした。皆さんが助けていただければ幸いです。

RewriteCond !^example\.com\/whmcs\/admin
RewriteCond ^example\.com\/whmcs$
RewriteRule https://example.com/client-portal [R=301,L]

私の意図は、これにより/whmcsがリダイレクトされるが、/whmcs/adminはリダイレクトされないことでした。

1
TJVR

これがあなたの目標を完全に網羅するかどうかはわかりませんが、http wwwモードをhttps non-wwwモードに変えます:

RewriteEngine On

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_Host} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

次に、whmcsを新しいURLにリダイレクトするには、おそらく単純な301を使用できます:Redirect 301 /whmcs /client-portal

これらは両方とも、アプリのルート、またはオプションでAレコードが取得される場所に入ります。

1
dhaupin

複数の書き換えルールのアプローチを取ることもできます。 example.comを実際のドメイン名に置き換えます。

RewriteEngine On 

RewriteCond %{HTTPS} off
# HTTPS is off!
# Redirect to the secure canonical URL
RewriteRule (.*) https://example.com/$1 [L,R=301]

RewriteCond %{HTTP_Host} !^example\.com$ [NC]
# Host name is not correct!
# (maybe it has a www?)
# Redirect to the secure canonical URL
RewriteRule (.*) https://example.com/$1 [L,R=301]

succeedonline.co.za/whmcsリダイレクトに関しては、単一の単純な書き換えルールを使用できます。

RewriteRule ^whmcs$ https://example.com/client-portal [L,R=301]

^は「で始まる」および$は「で終わる」ことを意味するため、リダイレクトはURLがexactlysucceedonline.co.za/whmcsである場合にのみトリガーされますsucceedonline.co.za/whmcs/adminの場合。

1

HTTPSプロトコルで非wwwサイトをまだリダイレクトしていないことに気付きました。ただし、HTTPプロトコルでは正常に機能します。完全な.htaccessファイルの抜粋を次に示します。

RewriteOptions inherit

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_Host} ^(?:www\.)?(.*)$ [NC] 
RewriteRule (.*) https://%1%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_Host} ^(?:www\.)?(.*)$ [NC] 
RewriteRule (.*) https://%1%{REQUEST_URI} [L,R=301]

#RewriteCond !^example\.com\/clients\/bestuur
#RewriteCond ^example\.com\/clients$
#RewriteRule https://example.com/client-portal [R=301,L]
1
TJVR