[HELP]Поддомены через htaccess

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем antiadmin, 1 май 2009.

Статус темы:
Закрыта.
  1. antiadmin

    antiadmin

    Регистр.:
    24 май 2008
    Сообщения:
    395
    Симпатии:
    23
    есть ссылка site.ru/user.php?id=lolik нужно получить lolik.site.ru, помогите разобраться
     
  2. OneWinged

    OneWinged Постоялец

    Регистр.:
    7 ноя 2007
    Сообщения:
    127
    Симпатии:
    54
    так можно:

    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^lolik.site.ru$ [OR]
    RewriteCond %{HTTP_HOST} ^www.lolik.site.ru$
    RewriteRule ^(.*)$ site.ru/user.php?id=lolik [R=301,L]
     
    antiadmin нравится это.
  3. antiadmin

    antiadmin

    Регистр.:
    24 май 2008
    Сообщения:
    395
    Симпатии:
    23
    угу, вручную... мне нужно чтобы автоматически это происходило, а вручную создавать для 5000 пользователей критинизм высшей степени
     
  4. vvprocenko

    vvprocenko Создатель

    Регистр.:
    17 фев 2008
    Сообщения:
    12
    Симпатии:
    3
    Может так:
    Код:
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^([0-9a-z]*).site.ru$ [OR]
    RewriteCond %{HTTP_HOST} ^www.([0-9a-z]*).site.ru$
    RewriteRule ^(.*)$ site.ru/user.php?id=$1 [R=301,L]
    
     
    antiadmin нравится это.
  5. sultan347

    sultan347

    Регистр.:
    25 апр 2009
    Сообщения:
    230
    Симпатии:
    7
    Ну почему у меня не получается, ведь делаю точно по аналогии:

    RewriteEngine on
    RewriteRule ^([a-z]+)/([0-9]+)/$ index.php?section=$1&id=$2 [QSA]
    RewriteRule ^([a-z]+)/$ index.php?section=$1 [QSA]
    RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
    RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
    #вот ваш кусочек кода
    RewriteCond %{HTTP_HOST} ^volga.site.ru$
    RewriteRule ^(.*)$ site.ru/river/25/?type=new [R=301,L]


    _http://site.ru/river/25/?type=new
    в
    _http://volga.site.ru
     
    antiadmin нравится это.
  6. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Так должно вроде работать...
    Код:
    RewriteCond %{HTTP_HOST} ^site.ru$
    RewriteCond %{REQUEST_URI} /user.php
    RewriteCond %{QUERY_STRING} ^id=(.*)$
    RewriteRule ^.*$ http://%1.site.ru? [L,R=301]
    
     
    antiadmin нравится это.
  7. sultan347

    sultan347

    Регистр.:
    25 апр 2009
    Сообщения:
    230
    Симпатии:
    7
    :(
    Может ли помочь в этом файл httpd.conf ?

    <VirtualHost 1**.***.***.**:80>
    ServerName Перейти по ссылке
    ServerAlias Перейти по ссылке site.ru
    DocumentRoot /home/admin/domains/site.ru/public_html
    ScriptAlias /cgi-bin/ /home/admin/domains/site.ru/public_html/cgi-bin/

    UseCanonicalName OFF

    SuexecUserGroup admin admin
    CustomLog /var/log/httpd/domains/site.ru.bytes bytes
    CustomLog /var/log/httpd/domains/site.ru.log combined
    ErrorLog /var/log/httpd/domains/site.ru.error.log

    <Directory /home/admin/domains/site.ru/public_html>
    Options +Includes -Indexes

    php_admin_flag engine ON
    <IfModule !mod_php6.c>
    php_admin_flag safe_mode OFF
    </IfModule>
    php_admin_value sendmail_path '/usr/sbin/sendmail -t -i -f admin@site.ru'
    php_admin_value open_basedir /home/admin/:/tmp:/usr/local/lib/php/
    </Directory>


    Можно ли здесь что нибудь придумать?
     
  8. Haliff3007

    Haliff3007 Читатель

    Заблокирован
    Регистр.:
    17 мар 2007
    Сообщения:
    481
    Симпатии:
    195
    Код:
    RewriteCond %{HTTP_HOST} ^site.ru$
    RewriteCond %{REQUEST_URI} /user.php
    RewriteCond %{QUERY_STRING} ^id=(.*)$
    RewriteRule ^.*$ http://%1.site.ru? [L,R=301]
    
    с 301 редиректом ошибка будет. Бесконечный редирект. Вдобавок, если на скрипте проверки не будет символов, можно будет инклуд сделать.
     
  9. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    А че это он бесконечный будет?
    Код:
    RewriteCond %{QUERY_STRING} ^id=(.*)$
    
    После первого вызова не будет пропускать...
     
  10. andrnag

    andrnag

    Регистр.:
    26 мар 2008
    Сообщения:
    350
    Симпатии:
    125
    Вообще, чтобы все эти правила в .htaccess начали работать, у вас должны быть все ваши поддомены припаркованы к основному домену.
    Это делается либо в панели управления вашим хостингом. Либо, если у вас есть доступ к http.conf — там.
    Причем, если с http.conf еще можно замутить неограниченное число доменов, т.е. без необходимости прописывать там каждый хост, то с виртуальным хостингом так не получится. (Хотя... может быть поможет правка DNS)

    Настройки:

    В http.conf:
    <VirtualHost *>
    ServerName Перейти по ссылке
    ServerAlias *.example.com
    *
    DirectoryIndex index.html
    DocumentRoot /home/www/www.example.com/htdocs
    *
    ...
    </VirtualHost>

    В .htaccess
    RewriteEngine on
    RewriteCond %{http_host} .
    RewriteCond %{http_host} !^Перейти по ссылке [NC]
    RewriteCond %{http_host} ^([^.]+)\.example.com [NC]
    RewriteRule ^(.*) Перейти по ссылке [R=301,L,QSA]
    Первая строка включает mod_rewrite, вторая для меня неизвестная, третья предотвращает переписывание Перейти по ссылке в example.com/www/, четвертая выдергивает псевдосубдомен, а пятая помещает его в конец ссылки.
    При таком раскладе все обращения к серверу вида subdomain.example.com приведутся к example.com/subdomain/.

    В днс можно попробовать такой трюк:
    *.example.com IN A 192.168.1.1
     
    antiadmin нравится это.
Статус темы:
Закрыта.