1

次の3つの条件を満たす組み合わせを見つけるのに苦労しています。条件を達成する書き換えルールと条件は何ですか? (ルールが機能していないことにすでに驚いています。)

  1. www はすべてのリクエストから削除されました
  2. プライマリへのすべてのリクエストの https
  3. サブドメイン(メイン サイトのサブフォルダー内)へのすべての要求の http subdomain.com

htaccess:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.primary\.mobi [NC,OR]
RewriteCond %{HTTP_HOST} ^primary\.mobi [NC,OR]
RewriteCond %{HTTP_HOST} !^(www\.)?subdomain\.com [NC]
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

上記は www を削除せず、www.subdomain を https に送信します。

説明を歓迎します。Apache mod_rewrite マニュアル ページを理解しようとしており、いくつかの方法を試しましたが成功しませんでした。

4

1 に答える 1

1

ドメインをキャプチャして、RewriteRule で使用できます。HTTP_REQUEST は置換部分では使用できませんが、RewriteCond ディレクティブでのみ使用できます。

よくわかりませんが、これを 2 つの.htaccessファイルに分割してみてください。これはメインディレクトリに入ります

RewriteEngine On

# remove www. from HTTPS requests
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.(primary\.mobi)$ [NC]
RewriteRule .* https://%1/$0 [R,L]

# redirect HTTP requests to HTTPS
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(primary\.mobi)$ [NC]
RewriteRule .* https://%1/$0 [R,L]

これは.htaccess、サブドメイン フォルダー内の

RewriteEngine On

# remove www. from HTTP requests
RewriteCond %{HTTP_HOST} ^www\.(subdomain\.com)$ [NC]
RewriteRule .* http://%1/$0 [R,L]

# redirect HTTPS requests to HTTP
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^(?:www\.)?(subdomain\.com)$ [NC]
RewriteRule .* http://%1/$0 [R,L]

ブラウザは 301 の結果をキャッシュし、テストをより難しくするため、301なしでルールをテストします。R=301ルールに満足するまで notを追加します。

Canonical Hostnamesでは、いくつかの代替案が説明されています。特に、仮想ホストを使用する最初のものは有望に見えます

<VirtualHost *:80>
    ServerName www.primary.mobi
    Redirect / https://primary.mobi/
</VirtualHost>

<VirtualHost *:80>
    ServerName primary.mobi
</VirtualHost>

<VirtualHost *:80>
    ServerName www.subdomain.com
    Redirect / http://subdomain.com/
</VirtualHost>

<VirtualHost *:80>
    ServerName subdomain.com
</VirtualHost>

これが実現可能かどうかはわかりませんが、試してみてください。

于 2013-01-17T17:30:42.233 に答える