Jump to content

Динамични субдомейни?


Препоръчан пост

Поблазни ме идеята да не се опреснява всеки път таблицата на DNS-а, когато ми хрумне да пусна някаква услуга като rss, forum, webmail и т.н.

Поразрових се доста из нета, пробвах решения с метатагове, редирект с джаваскирт и PHP и т.н. докато не попаднах на идеалното решение!

Признавам, ползвал съм mod_rewrite на Апачи-то, но не подорзирах че е толкова мощен инструмент.

Идеята е следната - в DNS се задава един, последен запис в зоната от вида *.mydomain.com IN A my_IP_address. След това в Апачи-то, работещо на този my_IP_address се разрешава RewriteEngine ON за оносовната директория и всяка заявка се "пренаписва" към съответната директория, като в тази директория отделно с .htaccess може да се манипулира адреса. Но до тук е на теория, поне при мен. С DNS-а няма грижи, но колкото и предложения, препоръки и други хватки от нета да пробвах - в основната директория пренаписване не се получава

Само един от примерите ще дам, но моля някой, който е прилагал този метод да сподели мнение.

 

RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com
RewriteRule (.*) [url="http://www.mydomain.com/$1"]http://www.mydomain.com/$1[/url] [R=301,L]

 

или

RewriteBase /
RewriteCond %{HTTP_HOST} \.mydomain\.com$
RewriteRule ^(.*)$ [url="http://www.mydomain.com/$1"]http://www.mydomain.com/$1[/url] [R=301,L]

Link to comment
Сподели другаде

  • 4 weeks later...

Чакай, че ми стана интересно ... не съм си играл с mod_rewrite но първо какво ти показва

 

$ sudo apache -l

или

$sudo apache2 -l

 

т.е. компилиран ли е апача за работа с този модул?

Link to comment
Сподели другаде

Apache Version Apache/1.3.37 (Unix) PHP/4.3.10

Apache Release 10337100

Apache API Version 19990320

User/Group wwwrun(1004)/103

Max Requests Per Child: 0 - Keep Alive: on - Max Per Connection: 100

Timeouts Connection: 300 - Keep-Alive: 15

Server Root /usr/local/apache

Loaded Modules mod_php4, mod_setenvif, mod_proxy, mod_auth, mod_access, mod_rewrite, mod_alias, mod_userdir, mod_actions, mod_cgi, mod_dir, mod_autoindex, mod_include, mod_status, mod_mime, mod_log_config, mod_env, http_core

 

Разбира се, че работи - ползвам го в други скриптове, като снимкови галерии с warpper - работи си.

Машината е Слак 10.1, 2.4.26 но това няма никакво значение. Но има Squid на същата машина с активиран httpd_accel_host virtual и httpd_accel_port, но е мога да си правя много експерименти - лайв машина на корпоративно ниво..

 

ПП. root съм на машината ;)

Редактиран от Topper
Link to comment
Сподели другаде

А ето и една извадка от лога rewrite.log

[mp3.mydomain.com/sid#8235ddc][rid#82807dc/initial] (3) [per-dir /var/www/htdocs/] add path-info postfix: /var/www/htdocs -> /var/www/htdocs/
[mp3.mydomain.com/sid#8235ddc][rid#82807dc/initial] (3) [per-dir /var/www/htdocs/] strip per-dir prefix: /var/www/htdocs/ -> 
[mp3.mydomain.com/sid#8235ddc][rid#82807dc/initial] (3) [per-dir /var/www/htdocs/] applying pattern '^(.+)' to uri ''
[mp3.mydomain.com/sid#8235ddc][rid#82807dc/initial] (1) [per-dir /var/www/htdocs/] pass through /var/www/htdocs
[mp3.mydomain.com/sid#8235ddc][rid#829337c/subreq] (2) init rewrite engine with requested uri /index.html
[mp3.mydomain.com/sid#8235ddc][rid#829337c/subreq] (1) pass through /index.html
[mp3.mydomain.com/sid#8235ddc][rid#8281d24/initial/redir#1] (2) init rewrite engine with requested uri /index.html
[mp3.mydomain.com/sid#8235ddc][rid#8281d24/initial/redir#1] (1) pass through /index.html
[mp3.mydomain.com/sid#8235ddc][rid#8281d24/initial/redir#1] (3) [per-dir /var/www/htdocs/] strip per-dir prefix: /var/www/htdocs/index.html -> index.html
[mp3.mydomain.com/sid#8235ddc][rid#8281d24/initial/redir#1] (3) [per-dir /var/www/htdocs/] applying pattern '^(.+)' to uri 'index.html'
[mp3.mydomain.com/sid#8235ddc][rid#8281d24/initial/redir#1] (4) RewriteCond: input='mp3.mydomain.com' pattern='^www\.mydomain\.com$' => not-matched
[mp3.mydomain.com/sid#8235ddc][rid#8281d24/initial/redir#1] (1) [per-dir /var/www/htdocs/] pass through /var/www/htdocs/index.html
[mp3.mydomain.com/sid#8235ddc][rid#82807dc/initial] (2) init rewrite engine with requested uri /theme.css
[mp3.mydomain.com/sid#8235ddc][rid#82807dc/initial] (1) pass through /theme.css
[mp3.mydomain.com/sid#8235ddc][rid#82807dc/initial] (3) [per-dir /var/www/htdocs/] strip per-dir prefix: /var/www/htdocs/theme.css -> theme.css
[mp3.mydomain.com/sid#8235ddc][rid#82807dc/initial] (3) [per-dir /var/www/htdocs/] applying pattern '^(.+)' to uri 'theme.css'
[mp3.mydomain.com/sid#8235ddc][rid#82807dc/initial] (4) RewriteCond: input='mp3.mydomain.com' pattern='^www\.mydomain\.com$' => not-matched
[mp3.mydomain.com/sid#8235ddc][rid#82807dc/initial] (1) [per-dir /var/www/htdocs/] pass through /var/www/htdocs/theme.css

Редактиран от Topper
Link to comment
Сподели другаде

Здравей, щом всичко е Ок, остава играта с mod_rewrite в .htaccess-а ама така и не съм сядал да се занимавам с него. Преди седмица или две трябваше да правя нещо допобно, но открих отговора тук http://httpd.apache.org/docs/2.0/rewrite/r...e_advanced.html

 

Т.е. не знам защо при теб не работи, но на машината, на която имаше проблем ако не се лъжа всичко бе едно към едно като твоето съдържание.

Link to comment
Сподели другаде

Трябваше да се убедя дали примера който даде и този който аз използвах са идентични, признавам човъркаше ме ...

 

давам пример с домейна softvisia.com

 

RewriteEngine On

RewriteCond %{HTTP_HOST} ^softvisia.com$ [NC]

RewriteRule ^.*$ http://www.softvisia.com%{REQUEST_URI} [R=301,L]

 

Успех!

Link to comment
Сподели другаде

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гост
Отговори на тази тема

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   Не можете да качите директно снимка. Качете или добавете изображението от линк (URL)

Loading...
×
×
  • Създай ново...