1

Тема: Элементарный redirect 301 в файле htaccess. Как???

Всем привет! Возник актуальный вопрос, который так и не получилось разрешить и я нигде в сообществе не нашел информации на эту тему. Хотя, на мой взгляд, вопрос интересный.
Вобщем, переделал свой сайт. Поменялись ссылки 3-х страниц. Например, ссылка одной из них была:
h..p:\\www.домен.ru\plan\ , а потом стала:
h..p:\\www.домен.ru\price\
Где в htaccess прописать инструкцию по редиректу 301 и, самое важное, КАК?
На одном из сайтов нашел генератор такой прописи. Вот что он выдал:

Options +FollowSymlinks
RewriteEngine on
rewriterule ^plan/(.*)$ http://www.avfsite.ru/service/$1 [r=301,nc]

Но этот код у меня не сработал!
Вот такой стандартный файл htaccess прилагается в новых версиях getsimple:

#
# GetSimple CMS htaccess ROOT file
# apache 2.4 
#

# The following require certain allow overrides, if getting 500 error comment them out one by one 
# can be resolved in apache httpd.conf to ensure security alternatives

# override charset
AddDefaultCharset UTF-8

# prevent directory listings
Options -Indexes

# Follow symbolink links, This is required for rewrites on some hosts
Options +FollowSymLinks

# Set the default handler.
DirectoryIndex index.php

# blocks direct access to the XML files - they hold all the data!
<Files ~ "\.xml$">
    <IfModule !mod_authz_core.c>
        Deny from all
    </IfModule>
    <IfModule mod_access_compat.c>
        Deny from all
    </IfModule>
    <IfModule mod_authz_core.c>
        <IfModule !mod_access_compat.c>
            Require all denied
        </IfModule>
    </IfModule>    
</Files>

<Files sitemap.xml>
    <IfModule !mod_authz_core.c>
        Allow from all
    </IfModule>
    <IfModule mod_access_compat.c>
        Allow from all
    </IfModule>
    <IfModule mod_authz_core.c>
        <IfModule !mod_access_compat.c>
            Require all granted
        </IfModule>
    </IfModule>    
</Files>

# handle rewrites for fancy urls
<IfModule mod_rewrite.c>
    RewriteEngine on

    # Usually RewriteBase is just '/', but 
    # replace it with your subdirectory path
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule /?([A-Za-z0-9_-]+)/?$ index.php?id=$1 [QSA,L]
</IfModule>

Пожалуйста, кто знает, подскажите решение! smile
Ведь это фундаментальный вопрос для дефолтных настроек getsimple, и такие ситуации часто будут возникать при работе с этой прекрасной CMS.

Сайт AVF83

Поделиться

2

Re: Элементарный redirect 301 в файле htaccess. Как???

https://devaka.ru/articles/redirect-301

Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

3

Re: Элементарный redirect 301 в файле htaccess. Как???

Олег, благодарю за ссылку! Да, я уже пол инета перерыл, в том числе был и на том сайте, который Вы посоветовали. Вобщем, устал экспериментировать с файлом htaccess. Хотел узнать, кто знает проверенный способ, рабочий на 100% и, самое главное, правильный способ для конкретного случая - дефолтная getsimple с ее htaccess. В каком месте прописать и как прописать редирект 301 с одной страницы сайта на другую. Повторюсь - я пробовал уже много раз прописывать, но не работает!

Сайт AVF83

Поделиться

4

Re: Элементарный redirect 301 в файле htaccess. Как???

при переходе с дле на гетсимпл, мне тоже приходилось редиректить некоторые ссылке на одном из сайтов, я использовал этот код

<IfModule mod_rewrite.c>
 RewriteEngine on

Redirect 301 /old-page.html http://new-domain.ru/new-page.html

я менял не домен, а именно ссылки, если вы редиректите домен, то этот код нужно устанавливать на старом домене

Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

5

Re: Элементарный redirect 301 в файле htaccess. Как???

Да, этот код подойдёт, если настроить GS на ссылки вида *.html и пр.

Redirect 301 /old-page.html http://new-domain.ru/new-page.html

Однако, этот способ не работает для дефолтных установок GS.
Эмпирическим путем мне все-таки удалось найти способ редиректа 301 для дефолтных установок GS, а точнее для ссылок вида http://сайт.ру/страничка/
Вот так можно прописывать редирект 301 в дефолтном htaccess:

...

# handle rewrites for fancy urls
<IfModule mod_rewrite.c>
    RewriteEngine on

    # Redirect on new pages
    RewriteRule ^old-1/(.*)$ http://www.домен.ru/new-1/$1 [r=301,L]
    RewriteRule ^old-2/(.*)$ http://www.домен.ru/new-2/$1 [r=301,L]
    RewriteRule ^old-3/(.*)$ http://www.домен.ru/new-3/$1 [r=301,L]

    # Usually RewriteBase is just '/', but 
    # replace it with your subdirectory path
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule /?([A-Za-z0-9_-]+)/?$ index.php?id=$1 [QSA,L]

</IfModule>

...

Все работает отлично! Если есть замечания по коду, прошу к обсуждению.
Надеюсь, информация по редиректу 301 для дефолтных настроек GS кому-нибудь пригодится.

Сайт AVF83

Поделиться

6

Re: Элементарный redirect 301 в файле htaccess. Как???

я попробовал редирект на другом сайте, такой код работает

Redirect 301 /old-page/ http://mydomen.ru/new-page/
Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

7

Re: Элементарный redirect 301 в файле htaccess. Как???

Хм.. Странно. Вчера весь вечер методом тыка пытался найти метод. Но попробую еще раз. Может, из-за кэша не получалось. Кстати, нужно историю подчищать после каждой правки htaccess, иначе не сработает. Попробую еще раз. Отпишусь.

Сайт AVF83

Поделиться

8

Re: Элементарный redirect 301 в файле htaccess. Как???

Подскажите, возможно ли осуществить перенаправление с главной страницы (index) на другую? Бьюсь-бьюсь...

Поделиться

9

Re: Элементарный redirect 301 в файле htaccess. Как???

http://www.hosting.nic.ru/support/htaccess.shtml
в файле .htaccess
2.6 Переопределение главной страницы сайта (индексного файла каталога)

Сделать главной страницей файл menu.html:

DirectoryIndex menu.html
Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться