0

フーボーイ私は一日中これに苦労してきました.

パラメータとして渡されたサブドメインを使用したサブドメインからスクリプト ファイルへのリダイレクトは正常に機能します。

特定のサブドメインが実際には実際のフォルダー (phpmyadmin) である場合、少なくとも前述のルールが適用されていないと、それを機能させることができないようです。

これが私のものです:

<VirtualHost *.domain.com:443>
ServerName *.domain.com
ServerAlias *.domain.com
DocumentRoot /home/domain/web
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.* [NC]
RewriteCond %{HTTP_HOST} ^(phpmyadmin)\.domain\.com
RewriteCond %{REQUEST_URI} !^phpmyadmin
RewriteRule ^(.*)$ /phpmyadmin [L]
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com
RewriteRule ^\/script2$ /public/script2.php?param1=%1 [L]
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com
RewriteRule ^(.*) /public/script1.php?param1=%1 [L]
<Directory /home/domain/web>
Options -Indexes IncludesNOEXEC FollowSymLinks -MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
SSLEngine on
SSLCertificateFile /home/domain/crt
SSLCertificateKeyFile /home/domain/key
</VirtualHost>

何か案は?

4

1 に答える 1

1

2 つの問題:

RewriteCond %{HTTP_HOST} !^www.* [NC]
RewriteCond %{HTTP_HOST} ^(phpmyadmin)\.domain\.com
RewriteCond %{REQUEST_URI} !^phpmyadmin
RewriteRule ^(.*)$ /phpmyadmin [L]
  1. ターゲット リダイレクトでは、ドメインを変更しません。/phpmyadmin を使用するだけでは、www.domain.com/phpmyadminではなくphpmyadmin.domain.com/phpmyadminにリダイレクトされます。これは、phpmyadmin サブドメインと一致し続けるため、無限のリダイレクト ループが発生する可能性があります。各リダイレクト。使用する:

    RewriteRule ^(.*)$ http://www.domain.com/phpmyadmin [L]

  2. RewriteRule最初の / が使用されていない場合とは異なり、次のRewriteCond %{REQUEST_URI}ように先頭のスラッシュが必要です。

    RewriteCond %{REQUEST_URI} !^/phpmyadmin

そうしないと、指示された /phpmyadmin と一致しないことを意味し、別の潜在的な自己一致無限リダイレクト ループにつながります。

また、あなたは必要ありません

RewriteCond %{HTTP_HOST} !^www. [NC]

URL が www で始まることはなく、phpmyadmin で始まることもありません。マッチング

RewriteCond %{HTTP_HOST} ^(phpmyadmin)\.domain\.com

NOT www 一致条件も true であることを自動的に暗示します。

于 2012-12-04T09:19:16.330 に答える