Настройка httpd.conf для обработки подстановочных доменов с помощью * нескольких * сценариев

1

У меня есть полноценный сайт, как:

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

Теперь я хочу иметь возможность настраивать дочерние сайты, такие как:

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

Из https://stackoverflow.com/questions/2844004/subdomain-url-rewriting-and-web-apps/2844033#2844033 я понимаю, что мне нужно сделать:

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

Но как насчет других сценариев, таких как scriptA и scriptB? Как мне сказать httpd.conf, чтобы правильно их обрабатывать?

Как я могу сказать httpd.conf, что он обрабатывает все после 'forwardwardslash', точно так же, как это происходит на основном сайте, но передает флаг параметра как

&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]
Стив
источник
Не пересекайте почту - это действительно вам не поможет.
user619714
Чего вы пытаетесь достичь - несколько сайтов с одинаковым содержанием? Несколько сайтов с разным контентом? Что-то еще - уточните, пожалуйста?
user619714
Посмотрите здесь: Правило
перезаписи
Привет, Iain. Я пытаюсь создать несколько сайтов с разным контентом, который загружается на основе параметра «домен».
Стив
Спасибо за указатель MichelZ - этот вопрос очень близок к тому, что мне нужно. Я попробовал это сегодня, но, похоже, он не перенаправляет с правильным параметром домена, а также перезаписывает адрес в браузере (что я НЕ хочу).
Стив

Ответы:

2

Если вы хотите, чтобы все эти URL-адреса заканчивались одним и тем же 3-мя сценариями - как я догадываюсь из вашей страницы, полной данных, - тогда вам ничего не нужно.

Просто перепишите вместо относительного URI:

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

Это будет работать для любого URL.

Я подозреваю, что вы делаете вещи ужасно запутанными без всякой причины - разумное сочетание vhosts и перенаправлений решит большинство проблем без необходимости сложной переписывания.

adaptr
источник
Привет adaptr - VirtualHosts указывают на разные тестовые сайты, которые расположены в разных папках. Мы передаем параметры через GET и POST, а также используем переписанные URL-адреса (например: www.example.com/event/1234/some-text-here)
Стив
Я думаю, что это работает плавно! Делать больше тестов ...!
Стив
Чудесные вещи!
Стив
Ах, небольшая проблема - это вообще не обрабатывает существующие параметры GET ... например, такие вызовы как: alpha.example.com/index.php?asdf=123&def=456
Стив
Изучите документацию для RewriteRule, особенно часть Flags, где написано [QSA]. Что касается «обработки» существующих строк запроса - вы не можете сделать это в RewriteRule; добавить RewriteCond и повторно использовать его результаты.
Адаптер