2013-04-28 1 views
0

Я пытаюсь разместить сайт, на котором страницы профиля пользователя поставляются с уникальными субдоменами, такими как username.sitename.com. Я хотел бы решение Apache/VirtualHost для указания * .sitename.com на sitename.com/index.php, где я мог бы сортировать, какой субдомен поставляется с страницей профиля и который будет показывать ошибку 404.Как указать все поддомены на index.php

Пожалуйста, помогите мне настройке .htaccess

+0

Это невозможно сделать с файлом .htaccess. –

+0

Catchall DNS record или что теперь? –

ответ

0

Лучше всего сделать это с помощью 301 редиректа на уровне сервера в файле httpd.conf (или включаемого файла конфигурации). Вместо того, чтобы создавать VirtualHost и отвечать на сервер и фильтровать его с помощью файла .htaccess для каждого домена, вы можете настроить перенаправление в самом VirtualHost.

Вы можете сделать это с mod_rewrite

<VirtualHost *> 
    ServerName subdomain.example.com 
    RewriteEngine on 
    RewriteRule ^/(.*)$ http://example.com/index.php [L,R=301] 
</VirtualHost> 

<VirtualHost *> 
    ServerName subdomain2.example.com 
    RewriteEngine on 
    RewriteRule ^/(.*)$ http://example.com/404.php [L,R=301] 
</VirtualHost> 

или если вы работаете mod_alias вы можете использовать это:

<VirtualHost *> 
    ServerName subdomain.example.com 
    Redirect 301/http://example.com/index.php 
</VirtualHost> 

<VirtualHost *> 
    ServerName subdomain2.example.com 
    Redirect 301/http://example.com/404.php 
</VirtualHost> 
1

Вам нужно только правильную установку VirtualHost.

<VirtualHost *:80> 
    ServerName example.com 
    ServerAlias *.example.com 

    [...] 

</VirtualHost> 

Поскольку index.php находится в DirectoryIndex, он вызывается автоматически, независимо от того, какой домен вызывается. Динамически реагируйте, что у вас есть доступ к запрашиваемому хосту через переменную $_SERVER['HTTP_HOST'].