IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   как с помощью mod_rewrite сделать редирект с субдомена на основной домен (http://www.imho.ws/showthread.php?t=145333)

maximkakor 01.02.2011 11:51

как с помощью mod_rewrite сделать редирект с субдомена на основной домен
 
Здравствуйте.
Прошу сильно не ругаться если это уже обсуждалось, поиск пробовал, но от чтения найденного еще больше запутался :idontnow:
Вообщем вопрос у меня такой. Есть сайт к примеру http://mysayt.ru в Яше и в Гуле есть ссылки такого вот типа http://blaba.blaba.mysayt.ru/book/123-kniga.html при переходе по такой ссылке попадаешь на http://mysayt.ru/book/123-kniga.html при том вложенность blaba может быть любой. После обращения в сапорт хостера, непонятные субдомены исчезли, но при переходе с ПС по старым ссылкам сайт не открывается, что не есть хорошо. Движок DLE, ЧПУ включено в .htacces пробовал разные варианты, но так как сам я в этом mod_rewrite полный чайник, то не чего путного не получилось. Нужно сделать так что бы при заходе с поисковика по ссылке http://blaba.blaba.mysayt.ru/book/123-kniga.html посетитель попадал на http://mysayt.ru/book/123-kniga.html т.е все что есть пред mysayt.ru обрезалось , а все что после mysayt.ru оставалось. Спасибо. С уважением Анатолий.

BonySoft 02.02.2011 11:22

попробуйте так:
Код:

RewriteCond %{HTTP_HOST} ^(.+?)\.mysayt.ru [NC]
RewriteRule ^(.*)$ http://mysayt.ru/$1 [R=301]


maximkakor 03.02.2011 09:35

Я уже обрадовался что есть еще люди которые могут помочь, но увы это не работает, ошибка 500. Может есть другие варианты? Спасибо.

Todor 04.02.2011 07:56

Помница я левые сабдомены куда-то перенаправлял. Не удалось откопать всю подноготную тех манипуляций, но этот кусок работал точно:

Код:

RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST}  !^www\.mysayt\.ru [NC]
RewriteRule ^(.*) http://www.mysayt.ru/$1 [R=301,L]


BonySoft 04.02.2011 11:46

Цитата:

Сообщение от maximkakor (Сообщение 1737687)
ошибка 500

исправленный вариант:

Код:

RewriteCond %{HTTP_HOST} ^([a-z0-9_-]+)\.mysayt.ru$ [NC]
RewriteRule ^(.*) http://mysayt.ru/$1 [L,R=301]

на всякий случай: убедитесь, что RewriteEngine On :rolleyes:

maximkakor 05.02.2011 00:48

НЕ может отобразить страницу :(
пробовал два варианта
вот мой кусок htacces

RewriteEngine On
RewriteBase /
# www
RewriteCond %{HTTP_HOST} ^www\.([^.]+\.ru)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
#index.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://admydoor.ru/ [R=301,L]
## subdomen_trash
а сюда надо написать волшебные строчки :yees:

Todor 05.02.2011 02:08

Есть еще вариант, который я на англоязычном форуме нашел в своё время. Редирект посредством виртульного хоста:
Код:

# NameVirtualHost *:80
 
<VirtualHost *:80>
    ServerName www.mysayt.ru
    # This is your main domain
</VirtualHost>
 
<VirtualHost *:80>
    ServerName mysayt.ru
    # This is to make sure that foo.domain.com gets redirected too
    ServerAlias *.mysayt.ru
    # If you want to use more virtual hosts on subdomains,
    # just define them earlier
    Redirect / http://www.mysayt.ru/
</VirtualHost>

попробуйте.

добавлено через 37 минут
Цитата:

Сообщение от maximkakor (Сообщение 1737944)
вот мой кусок htacces

А если в качестве эксперимента замените свой кусок на:
Код:

#добавить:
Options +FollowSymLinks
#и собс-на:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.mysate\.ru$ [NC]
RewriteRule ^(.*)$ http://www.mysate.ru/$1 [R=301,L]

Погуглил специально, троим товарищам полегшало.

maximkakor 05.02.2011 02:28

RewriteEngine On
RewriteBase /
# www
RewriteCond %{HTTP_HOST} ^www\.([^.]+\.ru)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
#index.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://admydoor.ru/ [R=301,L]
## subdomen_trash
# NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.admydoor.ru
# This is your main domain
</VirtualHost>
<VirtualHost *:80>
ServerName admydoor.ru
# This is to make sure that foo.domain.com gets redirected too
ServerAlias *.admydoor.ru
# If you want to use more virtual hosts on subdomains,
# just define them earlier
Redirect / http://admydoor.ru/
</VirtualHost>

еще раз показываю httacces, может из существующих правил возникает ошибка 500 ?
вот что я вставил в htacces
в строке Redirect / http://www.admydoor.ru/ я удалил www так как у меня основной домен без www

Todor 05.02.2011 07:50

Меня терзают смутные сомнения, что Wildcard DNS record вообще указует на Ваш домен. Меня, например, при наборе символьного имени перед названием сайта (blah.yoursite.ru) отправляет в поисковик :rolleyes:

BonySoft 05.02.2011 11:30

Цитата:

Сообщение от maximkakor (Сообщение 1737944)
НЕ может отобразить страницу :(

хмм, странно, сэмулировал ситуацию у себя на сервере -- работает :cool: ок, можно еще сильнее гайки закрутить:

Код:

RewriteCond %{HTTP_HOST} !^admydoor\.ru$ [NC]
RewriteRule ^(.*) http://admydoor.ru/$1 [L,R=301]

и желательно это в самое начало списка правил

maximkakor 05.02.2011 12:02

Опять не может отобразить страницу, наверное это все таки еще и от самого DLE зависит, а это может влиять?

###############################################
## DO NOT REMOVE OR EDIT LINES BELOW
# *** automatically generated config ***
AddType application/x-httpd-php5 .php
#ErrorDocument 404 404.html
ErrorDocument 400 400.html
ErrorDocument 401 401.html
ErrorDocument 403 403.html
ErrorDocument 500 500.html
# *** end of automatically generated config ***
###############################################
RewriteEngine On
RewriteBase /
# www
RewriteCond %{HTTP_HOST} ^www\.([^.]+\.ru)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
#index.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://admydoor.ru/ [R=301,L]
## subdomen_trash

правила Rewrite удалял , прямо какая то не решаемая задача, а могли бы ВЫ подробнее обьяснить что обозначет в том что написано здесь?

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} \.([a-z-]+\.[a-z]{2,6})$ [NC]
RewriteRule ^/(.*)$ http://%1/$1 [R=301,L]
Я попробую тоже понять и может вместе найдем решение?

добавлено через 7 минут
http://blaba.admydoor.ru/film/18469-...co-domato.html

не может отобразить страницу :(

добавлено через 3 минуты
Цитата:

Сообщение от Todor (Сообщение 1737962)
Меня терзают смутные сомнения, что Wildcard DNS record вообще указует на Ваш домен. Меня, например, при наборе символьного имени перед названием сайта (blah.yoursite.ru) отправляет в поисковик :rolleyes:

Так этими настрйками заведует хостер я уже им писал по этому поводу, отправили читать мануалы по настройке Mod_Rewrite
только что проверил
http://www.blaba.admydoor.ru/film/
не работает
http://www.admydoor.ru/film/
работает так
http://admydoor.ru/film/

BonySoft 05.02.2011 12:16

Цитата:

Сообщение от maximkakor (Сообщение 1737970)
Опять не может отобразить страницу,

естественно, ведь происходит ошибка "сервер не найден" ;)

ваш хостер отключил поддержку wildcard субдоменов и проблема с помощью htaccess/ModRewrite не решается

больше скажу, проблема ваша уже решена: поисковики со временем выкинут все ссылки с субдоменами, поскольку они не существуют

maximkakor 05.02.2011 13:29

Спасибо за помощь, думаю дальше продолжать нет смысла, сейчас смотрел Яшка уже выкинул , а Гоша еще думает , но думаю что скоро тоже удалит

Todor 06.02.2011 04:01

Цитата:

Сообщение от maximkakor (Сообщение 1737980)
думаю дальше продолжать нет смысла

Дык и я о том же, мы тут уже, как минимум, три верных варианта опробовали, а оно все не работает и не работает ;) Хорошо, что Вы выложили ссылку на сайт и стало понятно, что содержащиеся в адресе сабдомены просто DNS серверами не обрабатываются. А хостер Вас, по привычке его скверной, лесом отправил.


Часовой пояс GMT +4, время: 20:26.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.