Автор Тема: apache redirect if not existing vhost  (Прочетена 4740 пъти)

dvbb

  • Напреднали
  • *****
  • Публикации: 207
  • Nothing else!
    • Профил
apache redirect if not existing vhost
« -: Oct 16, 2010, 20:13 »
Здравейте

Въпроса ми е как мога да настроя apache при несъществуваш vhost да пренасочва към съществуваш такъв.
Apache съм го настроил да се създават vhosts като създам DocumentRoot
(VirtualDocumentRoot /var/www/root.%0). примерно създавам /var/www/root.sun.domain.com
и получавам vhost sun.domain.com. Искам при заявка към neshtonesyshtestvuvashto.domain.com да препраща към http://www.domain.com

Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: apache redirect if not existing vhost
« Отговор #1 -: Oct 17, 2010, 00:55 »
Направи VirtualHost без ServerName. Той ще служи като VirtualHost по подразбиране. Когато някой прати заявка към твоя сървър с домейн или субдомейн, за който няма настроен VirtualHost, ще се отваря този по подразбиране. Ако искаш различни пренасочвания за различни несъществуващи VirtualHost-ове, можеш да сложиш един .htaccess файл с mod_rewrite правила за целта в папката на VirtualHost-а по подразбиране ;)

P.S.: Все пак, за да може да се изпрати заявка към твоя сървър при зареждане на даден несъществуващ домейн или субдомейн, трябва да има настроен DNS запис за него. Когато казвам "несъществуващ", имам предвид, че не съществува единствено за web сървъра. Ако искаш всички субдомейни на даден домейн да водят към твоя сървър, то настрой всички субдомейни на този домейн да водят към твоето IP. В bind това се указва със знака @, който се вписва на мястото на субдомейна. Пример за такъв ред от зонов файл на bind
Цитат
@    A    11.22.33.44
« Последна редакция: Oct 17, 2010, 01:03 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

triel

  • Напреднали
  • *****
  • Публикации: 36
    • Профил
Re: apache redirect if not existing vhost
« Отговор #2 -: Oct 17, 2010, 02:47 »
В bind това се указва със знака @, който се вписва на мястото на субдомейна. Пример за такъв ред от зонов файл на bind
Цитат
@    A    11.22.33.44

Всъщност @ е shortcut към моментната стойност на $ORIGIN, а wildcard records се описват с *
Цитат
*    A    11.22.33.44

Здравейте

Въпроса ми е как мога да настроя apache при несъществуваш vhost да пренасочва към съществуваш такъв.
Apache съм го настроил да се създават vhosts като създам DocumentRoot
(VirtualDocumentRoot /var/www/root.%0). примерно създавам /var/www/root.sun.domain.com
и получавам vhost sun.domain.com. Искам при заявка към neshtonesyshtestvuvashto.domain.com да препраща към http://www.domain.com

Явно ползваш mod_vhost_alias - единственото, което ми хрумва в твоя случай е да използваш mod_rewrite за проверка дали съществува docroot директория за дадения hostname, и ако не съществува - да rewrite-ваш hostname към http://www.domain.com.
« Последна редакция: Oct 17, 2010, 02:57 от triel »
Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: apache redirect if not existing vhost
« Отговор #3 -: Oct 17, 2010, 04:23 »
Извинявам се за грешката, нещо ме е хванала някаква инерция. Между другото, не е и така, както ме поправи, а така
Цитат
*   IN A   11.22.33.44
Както и да е, то стана голяма история ;D
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

dvbb

  • Напреднали
  • *****
  • Публикации: 207
  • Nothing else!
    • Профил
Re: apache redirect if not existing vhost
« Отговор #4 -: Oct 17, 2010, 12:12 »
Насочил съм
domain.com 1.1.1.1
*.domain 1.1.1.1
{каквото и да напиша}.domain.com ме праща на машината.

Вероятно ми трябва RewriteRule но нещо не мога да го съчиня , така че да работи.Иначе да трябва да проверява за docroot и hostname.
Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: apache redirect if not existing vhost
« Отговор #5 -: Oct 17, 2010, 12:43 »
Да, трябва ти RewriteRule правило, но за да ти бъде даден пример за твоите нужди, трябва да опишеш точно какво искаш да се случва - всички несъществуващи субдомейни към един и същи VirtualHost ли ще се пренасочват или към различни. При пренасочването към другия VirtualHost ще се праща ли и въведеното REQUEST_URI (данните след домейна във въведеното url, като файл и GET променливи). Ако се праща, то запазено ли ще се праща или променено по някакъв начин... Детайлна картинка на това, което искаш да се случва.
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

dvbb

  • Напреднали
  • *****
  • Публикации: 207
  • Nothing else!
    • Профил
Re: apache redirect if not existing vhost
« Отговор #6 -: Oct 17, 2010, 13:02 »
Идеята е ако някой обърка  vhost-a да му каже че го е объркал, демек да го прати към http://domain/wrongurl.htm. vhost създавам като създам /var/www/root.sub и получавам sub.domain.com


Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: apache redirect if not existing vhost
« Отговор #7 -: Oct 17, 2010, 13:34 »
Тогава ти е достатъчно да сложиш това в .htaccess файла (или директно в настройката) на VirtualHost-а по подразбиране
Цитат
RewriteEngine on
RewriteRule ^(.*)$ http://domain/wrongurl.htm? [L,R=301]
Въпросителният знак в края на url-то указва пренасочване точно към това url, без да се изпращат към него въведените GET променливи. Ако искаш при пренасочването да се изпращат и GET променливите, само махни въпросителния знак от правилото ;)
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

dvbb

  • Напреднали
  • *****
  • Публикации: 207
  • Nothing else!
    • Профил
Re: apache redirect if not existing vhost
« Отговор #8 -: Oct 17, 2010, 13:53 »
така ми пренасочва и тези които съществуват към wrongurl.htm
Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: apache redirect if not existing vhost
« Отговор #9 -: Oct 17, 2010, 13:57 »
Покажи си цялостните настройки на сървъра и VirtualHost-овете, че така ни караш да хвърляме боб какво точно си сътворил.
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

dvbb

  • Напреднали
  • *****
  • Публикации: 207
  • Nothing else!
    • Профил
Re: apache redirect if not existing vhost
« Отговор #10 -: Oct 17, 2010, 14:22 »
httpd.conf
Цитат
#       *

ServerRoot "/etc/httpd"

include conf/modules.conf

PidFile run/httpd.pid

# ScoreBoardFile: File used to store internal server process information.
ScoreBoardFile logs/httpd.scoreboard

# Timeout: The number of seconds before receives and sends time out.
# 2 min, instead of 5
Timeout 120

# KeepAlive: Whether or not to allow persistent connections
KeepAlive On

# MaxKeepAliveRequests
MaxKeepAliveRequests 100

KeepAliveTimeout 5

# Specify a timeout after which a gracefully shutdown server will exit
GracefulShutdownTimeout 20


<IfDefine !special>

<IfModule prefork.c>
#StartServers 10
MinSpareServers 20
MaxSpareServers 80
</IfModule>

<IfModule worker.c>
ServerLimit 16
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
</IfModule>

MaxClients 180
# was 70
# then 100
# then 150
</IfDefine>

ListenBacklog 100
MaxRequestsPerChild 10000

<IfDefine !special>
# Master server
Listen 80
</IfDefine>

# user & group
#####
User apache
Group apache

# Memory usage
RLimitMEM 50000000 50000000

# 5 min = 300 sec
#RLimitCPU 300 300

# ServerAdmin: Your address, where problems with the server should be e-mailed.
ServerAdmin admins@domain.com

ServerName domain.com

# DocumentRoot
DocumentRoot "/var/www/root.sys"

include conf/dir.conf

# DirectoryIndex
<IfModule mod_dir.c>
        DirectoryIndex index.html index.htm
        DirectoryIndex default.htm default.html
        DirectoryIndex index.cgi
        DirectoryIndex index.shtm index.shtml index.php index.php3 index.php4 index.asp
        DirectoryIndex index.chtm index.chtml
        DirectoryIndex index.wml index.hdml
</IfModule>

# UseCanonicalName:  (new for 1.3)  With this setting turned on, whenever
# Apache needs to construct a self-referencing URL (a URL that refers back
# to the server the response is coming from) it will use ServerName and
# Port to form a "canonical" name.  With this setting off, Apache will
# use the hostname:port that the client supplied, when possible.  This
# also affects SERVER_NAME and SERVER_PORT in CGI scripts.
UseCanonicalName Off

#MIME
<IfModule mod_mime.c>
        TypesConfig conf/mime.types
</IfModule>

<IfModule mod_mime_magic.c>
        MIMEMagicFile conf/magic
</IfModule>

HostnameLookups Off

#Logs
<IfDefine !special>
ErrorLog    logs/error_log
TransferLog logs/access_log
</IfDefine>

<IfDefine special>
ErrorLog    logs/error_log_sp
</IfDefine>

# LogLevel
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn

# Header in HTTP responces
ServerTokens Prod

# Optionally add a line containing the server version and virtual host
# name to server-generated pages (error documents, FTP directory listings,
# mod_status and mod_info output etc., but not CGI generated documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of:  On | Off | EMail
ServerSignature Off

<IfModule mod_autoindex.c>
        Include conf/mod_index.conf
</IfModule>
<IfModule mod_mime.c>
        Include conf/mod_mime.conf
</IfModule>
<IfModule mod_setenvif.c>
        include conf/mod_setenvif.conf
</IfModule>

#Moved to dir.conf to prevent the hack
#<IfModule mod_actions.c>
#       include conf/mod_actions.conf
#</IfModule>

<IfModule mod_deflate.c>
        AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript text/javascript text/css
#       AddOutputFilterByType DEFLATE text/*
</IfModule>

#Virtual Hosts

<IfDefine !special>

NameVirtualHost *

<VirtualHost _default_>
DocumentRoot /var/www/root.sys/
</VirtualHost>

#vhosts dir#
include conf/VIRTUAL/*

</IfDefine>


domain.conf
Цитат

<VirtualHost _default_>

VirtualDocumentRoot /var/www/root.%1

ServerName   domain.com
ServerAlias  *.domain.com

TransferLog  logs/domain.log
ErrorLog     logs/domain.err

</VirtualHost>
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
apache vhost settings
Настройка на програми
mrowcp 13 4674 Последна публикация Feb 15, 2009, 19:23
от mrowcp
как да подкарам Apache 2 на Suse 11.1 и Vhost
Настройка на програми
tseroo1 7 4280 Последна публикация Mar 27, 2009, 03:48
от phantomlord
apache vhost FreeBSD БТК АДСЛ
Системни настройки
asp 1 2346 Последна публикация Nov 07, 2009, 23:23
от asp
Apache + namebase vhost
Настройка на програми
abadon 4 3567 Последна публикация Dec 08, 2009, 09:12
от abadon
apache vhost & nginx
Настройка на програми
mrowcp 7 3669 Последна публикация Apr 05, 2019, 20:35
от vladi4k0