fragen stichworte

Konfigurieren Sie httpd.conf für die Verarbeitung von Platzhalterdomänen mit * mehreren * Skripts

Ich habe eine ausgewachsene Site wie:

http://www.example.com (uses index.php)
http://www.example.com/scriptA.php
http://www.example.com/scriptB.php

Ich möchte jetzt die Möglichkeit haben, Unterwebsites wie

einzurichten
http://alpha.example.com
http://alpha.example.com/scriptA.php
http://alpha.example.com/scriptB.php

Von https://stackoverflow.com/questions/2844004/subdomain-url-rewriting-and-web-apps/2844033#2844033, ich verstehe, dass ich Folgendes tun muss:

RewriteCond %{HTTP_HOST} ^([^./]+)\.example\.com$
RewriteCond %1 !=www
RewriteRule ^ index.php?domain=%1

Aber was ist mit den anderen Skripten wie scriptA und scriptB? Wie kann ich der httpd.conf mitteilen, dass sie auch richtig damit umgehen soll?

Wie kann ich httpd.conf mitteilen, dass alles nach dem 'forwardslash' gehandhabt wird, genau wie auf der Hauptseite, aber ein Parameter-Flag wie

übergeben wird
&domain=alpha

EDIT1

...
I have lots of these subdomains being used, but I placed them _before_ the main 'www' one.
...

<VirtualHost IPADDRESS:80>
    ServerAlias test4.example.com
    ServerAdmin me@me.com
    DocumentRoot/home/test4/public_html
    ServerName test4.example.com
    UseCanonicalName On
</VirtualHost>



<VirtualHost IPADDRESS:80>
    ServerAlias *.example.com
    ServerAdmin me@me.com
    DocumentRoot/var/www/html/beta
    ServerName example.com
    UseCanonicalName On

<IfModule mod_geoip.c>
    GeoIPEnable On
    GeoIPDBFile/opt/GeoLiteCity.dat IndexCache
</IfModule>    

 <IfModule mod_rewrite.c>
    RewriteEngine On

RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,NC,L]

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.example\.com$ [NC]
RewriteCond %{QUERY_STRING}  ^$
RewriteRule ^(.*)$   http://www.example.com%{REQUEST_URI}?domain=%1 [L]

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.example\.com$ [NC]
RewriteCond %{QUERY_STRING}  !^$
RewriteRule ^(.*)$   http://www.example.com%{REQUEST_URI}?%{QUERY_STRING}&domain=%1 [L]

antworten

Wenn Sie möchten, dass all diese URLs mit den gleichen 3 Skripts enden, wie ich anhand Ihrer mit Daten gefüllten Seite vermute, benötigen Sie nichts davon.

Schreiben Sie einfach einen relativen URI:

RewriteCond %{HTTP_HOST} ^([^./]+)\.example\.com$
RewriteRule ^(.*\.php)$ $1?domain=%1 [QSA]

Dies funktioniert für jede URL.

Ich vermute, Sie machen Dinge ohne Grund schrecklich verschlungen - eine vernünftige Kombination von vhosts und Weiterleitungen löst die meisten Probleme ohne komplizierte Umschreibung.