2

Может кто-нибудь подскажет, как можно достичь следующим образом (я не мог приготовить раствор, используя либо mod_rewrite или virtualdocumentroot) ::Apache - субдомены, mod_rewrite и virtualdocumentroot

1) Разрешить любой субдомен на моем веб-сайте, (* .mysite.com не должен давать ошибку 404) И

2) Убедитесь, что URL, который пользователь видит в браузере, это то, что он набрал.

3) Нет перенаправляет

(Таким образом, если пользователь avalidsubdomain.mywebsite.com, страницы должны быть поданы в соответствующий каталог. В этот момент я не забочусь о структуре каталогов, мне нужно сохранить. Что-нибудь пока он работает. С другой стороны, если он набирает somethingthatdoesnotexist.mywebsite.com, он не должен получать 404, а вместо этого должен быть отправлен на пользовательскую страницу на веб-сайте).

Например, посмотрите, что любой субдомен на blogspot.com будет работать - например, http://dsadsadsdsadsd.blogspot.com/. (Конечно, Google - это Google, и они могут написать собственный веб-сервер). Но я уверен, что что-то простое, как это можно сделать в Apache.

Примечания: 1) Я не хочу добавлять/изменять конфигурацию apache или .htaccess при каждом добавлении действительного поддомена.

2) Из того, что я прочитал на разных потоках, я могу использовать mod_rewrite для правила субдомена catchall, но тогда URL, который пользователь видит в броузере, не остается прежним.

спасибо!

веселит,

JP


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

mod_rewrite regex (too many redirects)

ответ

1

Сценарий вы хотите настроить может быть реализован с mod_vhost_alias для Apache HTTPD.

Вам просто нужно создать виртуальный хост по умолчанию, чтобы поймать несуществующие поддомены, см. An In-Depth Discussion of Virtual Host Matching.

Пример:

<VirtualHost _default_:80> 
    ServerName example.com 
    DocumentRoot /srv/www/custom_page 
    # ... 
</VirtualHost> 

UseCanonicalName Off 
VirtualDocumentRoot /srv/www/%1/%2+ 
+0

Я пробовал это, точно так же, как вы писали выше. Но он еще не переходит к custom_page для туманных поддоменов (или любого несуществующего url). Все модули включены, а apache перезапущен. – 2010-11-01 13:16:05

0

Что вы описываете может быть сделано с DNS, и вы должны будете использовать wildcards, чтобы вытащить его.

+0

DNS с подстановочным знаком уже настроен и работает нормально. Запросы на * .mydomain.com поступают на мой сервер. Просто, что я хочу, чтобы я) имел возможность динамически добавлять субдомены без переконфигурации apache или чего-то еще, и в то же время перенаправлять туманные домены на мою домашнюю страницу (или что-то в этом роде). – 2010-11-01 13:22:41

+0

Тогда жоши прав. –

0

За что его стоит:

Я пришел an approach that uses mod_rewrite вместе с VirtualDocumentRoot /.../%0 переориентировать несуществующих поддоменов на соответствующие корневые домены. Это обновляет URL-адрес клиента, но вы можете использовать флаг [P] RewriteRule, чтобы скрыть это. Также было бы тривиально перенаправить на страницу-заполнитель, как в вашем примере.

После настройки вам не нужно редактировать какие-либо параметры конфигурации, чтобы добавлять или удалять домены или поддомены.

0

в вашем httpd.конф добавить

<VirtualHost *:80> 
     ServerName default 
     ServerAlias * 
     VirtualDocumentRoot /htdocs/%-2.0.%-1/%-3 
</VirtualHost> 

Wich Виль указать свой домен на www.example.com в /htdocs/example.com/www/

Затем добавьте файл .htaccess в папке rooit: /HTDOCS/example.com/.htaccess, который включает в себя: Теперь каждый несуществующий домен будет перенаправлен на www с кодом статуса 301 (Permantly Moved). Вы можете изменить WWW так, как хотите.

# Enable Rewrite Engine 
RewriteEngine on 

# Rewrite all non-existing sites to www. 
RewriteCond %{HTTP_HOST} example\.com$ 
RewriteRule ^.*$ http://www.example.com%{REQUEST_URI} [R=301,L] 

Надеюсь, это поможет вам.

Смежные вопросы