2012-04-08 15 views
0

Hoo-Junge Ich habe den ganzen Tag mit diesem gekämpft.Senden Sie eine Subdomain an Unterverzeichnis, alles andere mit Parameter

Die Umleitung von den Subdomains zu den Skriptdateien mit Subdomain, die als Parameter übergeben wurden, funktioniert einwandfrei.

Wenn eine bestimmte Subdomain tatsächlich ein echter Ordner (phpmyadmin) ist, kann ich es nicht funktionieren lassen, zumindest nicht mit der zuvor erwähnten Regel.

Hier ist meine Sachen:

<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> 

Irgendwelche Ideen?

Antwort

1

2 Probleme mit:

RewriteCond %{HTTP_HOST} !^www.* [NC] 
RewriteCond %{HTTP_HOST} ^(phpmyadmin)\.domain\.com 
RewriteCond %{REQUEST_URI} !^phpmyadmin 
RewriteRule ^(.*)$ /phpmyadmin [L] 
  1. In Ihrem Ziel Umleitung, die Sie nicht die Domäne ändern. Wenn Sie /phpmyadmin nur verwenden, verweisen Sie nicht auf www.domain.com/phpmyadmin, Sie verweisen auf phpmyadmin.domain.com/phpmyadmin, was wahrscheinlich eine unendliche Umleitungsschleife verursachen wird, da es beibehalten wird passend zur phpmyadmin Subdomain jeder Umleitung. Verwendung:

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

  2. Im Gegensatz zu RewriteRule wo die anfänglichen/nicht verwendet wird, RewriteCond %{REQUEST_URI} wie so den führenden Schrägstrich benötigt:

Geschieht dies nicht, bedeutet es nicht passend zu directed/phpmyadmin, was zu einer weiteren potentiellen selbstpassenden unendlichen Redirect-Schleife führt.

Auch brauchen Sie nicht

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

da Ihre URL würde nie mit phpMyAdmin mit www und auch starten starten. Passende

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

impliziert automatisch die NICHT www Paßgenauigkeitsbedingung auch wahr ist

+0

auch ohne [R] Flag, die Umleitung Regel als Alias ​​handeln, was bedeutet, dass phpmyadmin.domain.com leise wird Umleitung zu www.domain.com/phpmyadmin hinter den Kulissen, aber Ihre URL ändert sich nicht. Ersetzen Sie [L] durch [R = 301, L], wenn Sie tatsächlich die URL-Änderung im Browser sehen möchten (zumindest zum Testen, da sie viel einfacher ist, wenn Sie sehen können, wohin die Weiterleitung geht). – WebChemist

Verwandte Themen