Jump to content
  • 0

301 редирект через .htaccess


maritca
 Share

Question

Поможите, люди добрые, настроить 301 редирект со старых динамических страниц на новые.

Нужно настроить, например, переадресацию со страницы

http://www.сайт.ru/catalog/index.php?ID=16

на http://www.сайт.ru/auto_id/tsd/

В корне сайта я нашла .htaccess. Попыталась настроить переадресацию по одному из найденных в сети примеров - пока не помогло.

Вот так сейчас выглядит мой .htaccess. Может,

RewriteCond %{QUERY_STRING} ^id=16

RewriteRule ^index.php$ http://www.сайт.ru/auto_id/tsd/? [L,R=301]

нужно вообще в другое место поместить куда-нибудь?

И ещё почему-то одна из интересующих меня в плане продвижения сайта систем выдаёт, что у меня ошибка при обработке статуса 404. Это же тоже делается через .htaccess? Что в нём не так?

[/color][/size][/font][/color]

Options -Indexes
ErrorDocument 404 /404.php

#php_flag allow_call_time_pass_reference 1
#php_flag session.use_trans_sid off

#php_value display_errors 1

#php_value mbstring.func_overload 2
#php_value mbstring.internal_encoding UTF-8

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^сайт.ru$ [NC]
RewriteRule ^(.*)$ http://www.сайт.ru/$1 [R=301,L]
RewriteCond %{QUERY_STRING} ^ID=16
RewriteRule ^index.php$ http://www.сайт.ru/auto_id/readers/? [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
</IfModule>

<IfModule mod_mime.c>
AddType application/x-httpd-php .ico
</IfModule>

<IfModule mod_dir.c>
DirectoryIndex index.php index.html
</IfModule>

<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/jpeg "access plus 3 day"
ExpiresByType image/gif "access plus 3 day"
</IfModule>

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

парился уже с похожей проблемой, тут посмотри может поможет.

в битриксе вместо 404 страницы выступает карта сайта, что в принципе даже логичнее чем 404.

Переписала на это:


RewriteCond %{QUERY_STRING} ^ID=16
RewriteRule ^catalog/index.php$ /auto_id/pos/ [QSA,L,R=301]

Спасибо! Теперь хотя бы какое-то движение намечается, но всё равно некорректно пока.

Сейчас в конечном урле - http://www.сайт.ru/auto_id/pos/?ID=16

Как теперь убрать это "?ID=16" из него?

UPD. Заработало корректно, страница переадресовывается, открывается, но ID=16 всё равно в адресе осталось... её можно насовсем убрать оттуда?

Edited by maritca
Link to comment
Share on other sites

  • 0

парился уже с похожей проблемой, тут посмотри может поможет.

в битриксе вместо 404 страницы выступает карта сайта, что в принципе даже логичнее чем 404.

Переписала на это:


RewriteCond %{QUERY_STRING} ^ID=16
RewriteRule ^catalog/index.php$ /auto_id/pos/ [QSA,L,R=301]

Спасибо! Теперь хотя бы какое-то движение намечается, но всё равно некорректно пока.

Сейчас в конечном урле - http://www.сайт.ru/auto_id/pos/?ID=16

Как теперь убрать это "?ID=16" из него?

UPD. Заработало корректно, страница переадресовывается, открывается, но ID=16 всё равно в адресе осталось... её можно насовсем убрать оттуда?

Вам надо поискать в яндексе "создание человекопонятных ссылок" и посмотреть конкретно для вашего движка. Или ЧПУ (человекопонятные урлы)

Edited by Noraad
Link to comment
Share on other sites

  • 0

Вам надо поискать в яндексе "создание человекопонятных ссылок" и посмотреть конкретно для вашего движка. Или ЧПУ (человекопонятные урлы)

ммм... дело в том, что там и так все новые урлы работают замечательно, без динамической части. Автоматическое добавление ID=16 на новую страницу (конечную, то есть получаемую при переадресации) ровным счётом ничего не меняет, кроме того, что эти цифры видно в адресе. Если я напишу вместо 16 другое число - тоже ничего не изменится. Следовательно, я так понимаю, что искать в яндексе "создание человекопонятных ссылок" в данном случае не нужно. А нужно каким-то образом переписать обработку адреса в htaccess, возможно. Но я в этом ничего не понимаю. а подобного примера ни в яндексе, ни в гугле не нашла.

На самом деле на отображении страницы это добавление, ещё раз повторяю, никаким образом не отражается. Но я беспокоюсь, что в глазах поисковой системы http://www.сайт.ru/auto_id/pos/?ID=16 и http://www.сайт.ru/auto_id/pos/ будут разными страницами с дублирующимся контентом.

И, конечно, я уже поискала и в яндексе, и в гугле перед тем, как спросить тут.

Link to comment
Share on other sites

  • 0

парился уже с похожей проблемой, тут посмотри может поможет.

в битриксе вместо 404 страницы выступает карта сайта, что в принципе даже логичнее чем 404.

Переписала на это:


RewriteCond %{QUERY_STRING} ^ID=16
RewriteRule ^catalog/index.php$ /auto_id/pos/ [QSA,L,R=301]

Спасибо! Теперь хотя бы какое-то движение намечается, но всё равно некорректно пока.

Сейчас в конечном урле - http://www.сайт.ru/auto_id/pos/?ID=16

Как теперь убрать это "?ID=16" из него?

UPD. Заработало корректно, страница переадресовывается, открывается, но ID=16 всё равно в адресе осталось... её можно насовсем убрать оттуда?

Если вам больше не важны данные строки запроса уберите флаг QSA это он добавляет к итоговому адресу праметры запроса:


RewriteCond %{QUERY_STRING} ^ID=16
RewriteRule ^catalog/index.php$ /auto_id/pos/ [L,R=301]

Link to comment
Share on other sites

  • 0

парился уже с похожей проблемой, тут посмотри может поможет.

в битриксе вместо 404 страницы выступает карта сайта, что в принципе даже логичнее чем 404.

Переписала на это:


RewriteCond %{QUERY_STRING} ^ID=16
RewriteRule ^catalog/index.php$ /auto_id/pos/ [QSA,L,R=301]

Спасибо! Теперь хотя бы какое-то движение намечается, но всё равно некорректно пока.

Сейчас в конечном урле - http://www.сайт.ru/auto_id/pos/?ID=16

Как теперь убрать это "?ID=16" из него?

UPD. Заработало корректно, страница переадресовывается, открывается, но ID=16 всё равно в адресе осталось... её можно насовсем убрать оттуда?

Если вам больше не важны данные строки запроса уберите флаг QSA это он добавляет к итоговому адресу праметры запроса:


RewriteCond %{QUERY_STRING} ^ID=16
RewriteRule ^catalog/index.php$ /auto_id/pos/ [L,R=301]

Убрала, не помогло :(

Что-нибудь ещё может мешать?

Link to comment
Share on other sites

  • 0

парился уже с похожей проблемой, тут посмотри может поможет.

в битриксе вместо 404 страницы выступает карта сайта, что в принципе даже логичнее чем 404.

Переписала на это:


RewriteCond %{QUERY_STRING} ^ID=16
RewriteRule ^catalog/index.php$ /auto_id/pos/ [QSA,L,R=301]

Спасибо! Теперь хотя бы какое-то движение намечается, но всё равно некорректно пока.

Сейчас в конечном урле - http://www.сайт.ru/auto_id/pos/?ID=16

Как теперь убрать это "?ID=16" из него?

UPD. Заработало корректно, страница переадресовывается, открывается, но ID=16 всё равно в адресе осталось... её можно насовсем убрать оттуда?

Если вам больше не важны данные строки запроса уберите флаг QSA это он добавляет к итоговому адресу праметры запроса:


RewriteCond %{QUERY_STRING} ^ID=16
RewriteRule ^catalog/index.php$ /auto_id/pos/ [L,R=301]

Убрала, не помогло :(

Что-нибудь ещё может мешать?

забыл я про замену строки запроса ))) Вот так:


RewriteCond %{QUERY_STRING} ^ID=16
RewriteRule ^catalog/index.php$ /auto_id/pos/? [L,R=301]

Знак вопроса поставить нужно чтоб перекрыть query_string

Edited by wwt
  • Like 1
Link to comment
Share on other sites

  • 0

парился уже с похожей проблемой, тут посмотри может поможет.

в битриксе вместо 404 страницы выступает карта сайта, что в принципе даже логичнее чем 404.

Переписала на это:


RewriteCond %{QUERY_STRING} ^ID=16
RewriteRule ^catalog/index.php$ /auto_id/pos/ [QSA,L,R=301]

Спасибо! Теперь хотя бы какое-то движение намечается, но всё равно некорректно пока.

Сейчас в конечном урле - http://www.сайт.ru/auto_id/pos/?ID=16

Как теперь убрать это "?ID=16" из него?

UPD. Заработало корректно, страница переадресовывается, открывается, но ID=16 всё равно в адресе осталось... её можно насовсем убрать оттуда?

Если вам больше не важны данные строки запроса уберите флаг QSA это он добавляет к итоговому адресу праметры запроса:


RewriteCond %{QUERY_STRING} ^ID=16
RewriteRule ^catalog/index.php$ /auto_id/pos/ [L,R=301]

Убрала, не помогло :(

Что-нибудь ещё может мешать?

забыл я про замену строки запроса ))) Вот так:


RewriteCond %{QUERY_STRING} ^ID=16
RewriteRule ^catalog/index.php$ /auto_id/pos/? [L,R=301]

Знак вопроса поставить нужно чтоб перекрыть query_string

Спасибо огромнейшее-преогромнейшее! Теперь всё работает!

Link to comment
Share on other sites

  • 0

Знак вопроса поставить нужно чтоб перекрыть query_string

А вообще рано я обрадовалась :(

Теперь переадресация происходит по такому принципу.

Например, у меня есть страница с ID=14 и ID=140

Я хочу, чтобы переадресовывалась только первая страница (14), а 140 показывалась так, как она есть, без переадресации.

Но правило для ID=14 распространяется и на страницу 140. Можно это как-то откорректировать?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   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

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy