Проблема с редиректом

  • Автор темы Автор темы Nono
  • Дата начала Дата начала

Nono

Новичок
Добрый вечер.Подскажите, почему не работает редирект 301 как надо. Сменил домен сайта. в .htaccess прописал
PHP:
RewriteCond %{HTTP_HOST} ^uk-rost\.com
RewriteRule ^(.*)$ http://build-74[dot]ru/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www[dot]uk-rost\[dot]com
RewriteRule ^(.*)$ http://build-74[dot]ru/$1 [R=301,L]
Но перенаправляет с любой страницы по старому адресу исключительно на главную страницу по новому адресу.
 
Потому что такие вещи делаются на уровне сервера, а не .htaccess'ом.
<VirtualHost *>
ServerName x
Redirect permanent / http://y/
</VirtualHost>
 
Ответ не становится неправильным только от того, что он тебе не понравился.
 
Ответ не становится неправильным только от того, что он тебе не понравился.
Потому что такие вещи делаются на уровне сервера, а не .htaccess'ом.
<VirtualHost *>
ServerName x
Redirect permanent / http://y/
</VirtualHost>
--------------------
Почему такие вещи не делаются .htaccess'ом?Почему в моем случае не получилось как нужно, хотя везде описывают что работать должно?Почему при этом вы приводите код, который судя по всему также нужно прописывать в .htaccess и почему он будет работать?Почему вы называете конфигурационный файл веб сервера "не на уровне сервера"?
В вашем случае такой должен быть ответ. Если хотите поумничать, нечего было и писать.
 
Я объясню.

В htaccess можно делать очень мало что, у него автоматически подразумеваемый контекст Directory, соответствующий его нахождению. И изначально этот файл задуман только для простейших вещей, таких, как установка прав доступа к директории (отттуда слово access в названии).

Нормальные директивы там использовать почти нельзя, но вышло так, что можно использовать директивы Rewrite-модуля. Этим начали пользоваться на shared-хостингах, чтобы конфигурировать все, что попало. Слышали про архитектуртную концепцию "костыль"? Вот оно самое и есть. Ужас в том, что вместо нормальных, читаемых директив приходится выдумывать навороты на регулярных выражениях, с инвертированной логикой, которые сложно читать, с птичьим языком, напоминающим шутки типа языка brainfuck, они в сто раз сложнее нормальной конфигурации для восприятия, но люди настолько по опыту shared-ов к этому привыкли, что продолжают использовать этот ужас вместо того, чтобы прописать нормальную конфигурацию в httpd.conf своего сервера.

Если вы почему-то до сих используете shared-хостинг, то в его панели управления должны быть средства задать необходимые вам редиректы для разных доменов, или, как минимум, раскидать разные домены по разным подкаталогам. Если же все настолько запущено, что это единственный способ - можно включить отладку реврайтов, уж логи вебсервера-то вам должны быть доступны в какой-нибудь папочке logs, и отлаживать это все - так же, как программу. Конкретным советом вряд ли помогу, живого апача я не видел уже 10 лет, пишу по памяти со времен apache 1.3.
 
Последнее редактирование:
Я объясню.

В htaccess можно делать очень мало что, у него автоматически подразумеваемый контекст Directory, соответствующий его нахождению. И изначально этот файл задуман только для простейших вещей, таких, как установка прав доступа к директории (отттуда слово access в названии).

Нормальные директивы там использовать почти нельзя, но вышло так, что можно использовать директивы Rewrite-модуля. Этим начали пользоваться на shared-хостингах, чтобы конфигурировать все, что попало. Слышали про архитектуртную концепцию "костыль"? Вот оно самое и есть. Ужас в том, что вместо нормальных, читаемых директив приходится выдумывать навороты на регулярных выражениях, с инвертированной логикой, которые сложно читать, с птичьим языком, напоминающим шутки типа языка brainfuck, они в сто раз сложнее нормальной конфигурации для восприятия, но люди настолько по опыту shared-ов к этому привыкли, что продолжают использовать этот ужас вместо того, чтобы прописать нормальную конфигурацию в httpd.conf своего сервера.

Если вы почему-то до сих используете shared-хостинг, то в его панели управления должны быть средства задать необходимые вам редиректы для разных доменов, или, как минимум, раскидать разные домены по разным подкаталогам. Если же все настолько запущено, что это единственный способ - можно включить отладку реврайтов, уж логи вебсервера-то вам должны быть доступны в какой-нибудь папочке logs, и отлаживать это все - так же, как программу. Конкретным советом вряд ли помогу, живого апача я не видел уже 10 лет, пишу по памяти со времен apache 1.3.
Спасибо большое. В том то и дело, что сайт находится у компании-разработчика сайта, доступа к панели они ясное дело не дают.На аккаунте у них сайтов 20, у меня же доступ только к папке сайта. Поэтому и остался вариант с .htaccess. Пытаюсь разобраться сам.
 
Потребуйте от них прописать CNAME вашего сайта у них на ваш новый хостинг.
Или сами пропишите, если есть доуступ к настройкам DNS у них.
 
Проблему решил. Редирект работал неправильно из-за строчки RewriteRule ^ index.php [L] в начале файла. Убрал ее и все встало на свои места.
 
Сверху