Назад | Перейти на главную страницу

Невозможно заставить mod_rewrite остановить обработку

Это связано с Перезапись subdomain.domain.com при наличии других «поддоменов»

Мне нужен mod_rewrite, чтобы «остановить» обработку, но, похоже, она продолжается.

В моем регистраторе я установил записи A как:

* 12.34.56.78 
@ 12.34.56.78
mgr 12.34.56.79  [it was working, and is working]
dbaccess 12.34.56.79    [this is something new I added]

Теперь мой httpd.conf выглядит так:

<VirtualHost 12.34.56.79:80>    // notice the 79 which is something I'm trying out!
ServerAlias dbaccess.example.com
DocumentRoot /var/www/html/dbaccess
ServerName dbaccess.example.com
</VirtualHost>

NameVirtualHost 12.34.56.78:80

<VirtualHost 12.34.56.78:80>
ServerAlias *.example.com   // trying to catch science.example.com
DocumentRoot /var/www/html/site
ServerName www.example.com

 <IfModule mod_rewrite.c>
    RewriteEngine On
    ...
    RewriteCond %{HTTP_HOST} ^science\.example\.com [NC]
    RewriteRule (.*) http://www.example.com/classes/science/280.html [R=301,L]

    RewriteCond %{HTTP_HOST} !^www\.
    RewriteCond %{HTTPS}s ^on(s)|
    RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    ...
</VirtualHost>

// this is needed for other purposes
Listen *:2194

<VirtualHost *:2194>
   Redirect / http://mgr.example.com/
</VirtualHost>

Вот что работает, а что нет:

http://www.example.com/ works fine
http://mgr.example.com/ works fine
http://science.example.com/ works fine
http://dbaccess.example.com/ does NOT work fine

Доступ к dbaccess.example.com перенаправляет меня на www.dbaccess.example.com (то же самое, если я делаю doesnotexist.example.com, который перенаправляется на www.doesnotexist.example.com)

Как заставить dbaccess.example.com отображать содержимое / var / www / html / dbaccess?

Мне нужно было настроить все по-другому, это становилось все сложнее, чем нужно.

У меня есть следующие записи A:

* 12.34.56.78 
@ 12.34.56.78
mgr 12.34.56.79

I removed:
dbaccess 12.34.56.79

Мой httpd.conf теперь гласит:

// back to original
NameVirtualHost 12.34.56.78:80

<VirtualHost 12.34.56.78:80>
ServerAlias www.example.com science.example.com // change made that works
DocumentRoot /var/www/html/site
ServerName www.example.com

<IfModule mod_rewrite.c>
    RewriteEngine On
    ...
    RewriteCond %{HTTP_HOST} ^science\.example\.com [NC]
    RewriteRule (.*) http://www.example.com/classes/science/280.html [R=301,L]

    RewriteCond %{HTTP_HOST} !^www\.
    RewriteCond %{HTTPS}s ^on(s)|
    RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    ...
</VirtualHost>

// back to original
<VirtualHost 12.34.56.78:80>
ServerAlias dbaccess.example.com
DocumentRoot /var/www/html/dbaccess
ServerName dbaccess.example.com
</VirtualHost>

Listen *:2194

<VirtualHost *:2194>
   Redirect / http://mgr.example.com/
</VirtualHost>

Изменить:

NameVirtualHost 12.34.56.78:80

к

NameVirtualHost *:80

чтобы убедиться, что vhosts получает запросы на обоих IP-интерфейсах