У меня есть полноценный сайт, как:
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]
Ответы:
Если вы хотите, чтобы все эти URL-адреса заканчивались одним и тем же 3-мя сценариями - как я догадываюсь из вашей страницы, полной данных, - тогда вам ничего не нужно.
Просто перепишите вместо относительного URI:
Это будет работать для любого URL.
Я подозреваю, что вы делаете вещи ужасно запутанными без всякой причины - разумное сочетание vhosts и перенаправлений решит большинство проблем без необходимости сложной переписывания.
источник