1

Тема: 301 редирект с index.php

Форумчане приветствую!! Уже второ день не могу понять как сделать 301 редирект с index.php на главную со слэшем? Все так называемые "стандартные" редиректы не работают!

Поделиться

2 (2018-05-11 15:09:20 отредактировано ruschan)

Re: 301 редирект с index.php

Короче говоря, кто долго мучается, тому рабочий редирект! Не получилось у меня в итоге со слэшом это все дело организовать.
Пошел другим путем, в настройках сайта указал %slug%.html и прописал следующий код в файле .htaccess

#
# 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
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ https://www.мой сайт.ru/ [R=301,L]
RewriteCond %{HTTP_HOST} ^мой сайт\.ru$ [NC]
RewriteRule ^(.*)$ https://www.мой сайт.ru/$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-]+).html index.php?id=$1 [QSA,L]
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1.html [R=301,L]
RewriteRule ^(.*)/$ /$1.html [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ https://www.мой сайт.ru/$1 [R=301,L]
</IfModule>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css 

application/x-javascript application/javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0678 no-gzip
BrowserMatch bMSIE gzip-only-text/html
<ifmodule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_item_include file \.js$
mod_gzip_item_include file \.css$ </IfModule>
</IfModule>
# Cache Headers
<ifmodule mod_headers.c>
  # Cache specified files for 31 days
  <filesmatch "\.(ico|flv|jpg|jpeg|png|gif|css|swf)$">
  Header set Cache-Control "max-age=2678400, public"
  </filesmatch>
  # Cache HTML files for a couple hours
  <filesmatch "\.(html|htm)$">
  Header set Cache-Control "max-age=7200, private, must-revalidate"
  </filesmatch>
  # Cache PDFs for a day
  <filesmatch "\.(pdf)$">
  Header set Cache-Control "max-age=86400, public"
  </filesmatch>
  # Cache Javascripts for 31 days
  <filesmatch "\.(js)$">
  Header set Cache-Control "max-age=2678400, private"
  </filesmatch>
</ifmodule>
<FilesMatch "\.(php)$">
    <IfModule mod_expires.c>
        ExpiresActive Off
    </IfModule>
    <IfModule mod_headers.c>
        Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform"
    </IfModule>
</FilesMatch>

Все начало работать, переадресация с http на https, а также с без WWW на WWW. При такой настройке, в конце страниц будет .html
Забыл написать самое основное, после данных манипуляций АДМИНКА сайта будет уже доступна по адресу http://www.ВАШ САЙТ.ru/admin/load.php
Также возможно не подойдет пароль ваш, то нужно будет его скинуть системой восстановления пароля CMS GetSimple

Поделиться

3 (2018-05-11 17:47:18 отредактировано joyandjoy128)

Re: 301 редирект с index.php

Вот это бубен, так бубен)

А так в целом, согласен геморой, который по сути не решен, с редиректом с www и на без, с слешом на без, или на оборот, и в любом случае становится куча дублей(

Правда это не сильно имеет большой вес, но чувство не порядка очень не приятное чувство)

Поделиться

4 (2018-05-11 22:18:44 отредактировано ruschan)

Re: 301 редирект с index.php

joyandjoy128 пишет:

Вот это бубен, так бубен)

А так в целом, согласен геморой, который по сути не решен, с редиректом с www и на без, с слешом на без, или на оборот, и в любом случае становится куча дублей(

Правда это не сильно имеет большой вес, но чувство не порядка очень не приятное чувство)

Согласен! Где то проще, где то нет)))) Теперь уже вот и не знаю, вот такой адрес https://www.мой сайт.ru/страница с услугами.html/ (после html слэш). Это как назвать? Дубль или же надо как то 404 ошибку прикрутить к несуществующей странице? С таким реально первый раз сталкиваюсь, теперь вот полный ступор!
ПРОДОЛЖЕНИЕ
Прикрутил 404 ошибку через .htaccess. Теперь вроде 404 на несуществующую страницу отрабатывает норм.

ErrorDocument 404 https://www.мой сайт.ru/404.html

Но, если добавить к "живой" странице слэш, все равно, эта страница имеет место быть!

Поделиться

5

Re: 301 редирект с index.php

вас чем такие редиректы не устраивают?

# 301 редирект с www на без www
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www.domen\.ru$ [NC]
    RewriteRule ^(.*)$ http://domen.ru/$1 [R=301,L]

#301 редирект без слэша на со слэшем
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !(.*)/$
    RewriteRule ^(.*[^/])$ $1/ [L,R=301]
Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

6 (2018-05-12 01:05:22 отредактировано ruschan)

Re: 301 редирект с index.php

olsv64 пишет:

вас чем такие редиректы не устраивают?

# 301 редирект с www на без www
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www.domen\.ru$ [NC]
    RewriteRule ^(.*)$ http://domen.ru/$1 [R=301,L]

#301 редирект без слэша на со слэшем
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !(.*)/$
    RewriteRule ^(.*[^/])$ $1/ [L,R=301]

Олег, добрый вечер! Да пробовал их. (при этом сайт, был как обычно настроен (по умолчанию)
Я сайт перевел на https. Поставил по уму редирект с http на https в .htaccess.
Потом поменял в настройках сайта на https. Этот (стандартный редирект сработал).И админка и сайт начали работать через https.
Но столкнулся с проблемой, перевода с http://www. на https://мой сайт.  Другими словами, не было перевода.
А вот дальше "коллапс".
Дальше я поставил 301 с "без слэша на слеш".
Все норм работало, но был "дубль"-index.php.
Потом решил поставить редирект с "index.php" на главную (опять же обычной методикой)!!
и далее сайт "умер", весь внутряк , кроме "главной". (Ошибка 500 сервера)
Я как понял, что CMS хорошо понимает перенаправлении html (в конце).
Вот и начал мудрить.....))))
Согласен, тут скорее всего я намудрил больше лишнего, чем хорошего! но, с другой стороны: "не вижу перенаправления", ставлю код! Действительно, может все проще!?

Поделиться

7

Re: 301 редирект с index.php

почитайте
https://seo-akademiya.com/baza-znanij/v … oit-https/
http://romanus.ru/301-redirekt-v-seo/

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

Сайт olsv64

Поделиться

8 (2018-05-14 21:30:28 отредактировано ruschan)

Re: 301 редирект с index.php

Товарищи с не доставкой на почту сообщения отправленной через форму  обратной связи при ваша страница.html или ваша страница (без слэша). Факторов много, описал я из тут http://forum.getsimplecms.ru/viewtopic.php?id=8&p=6
Пока разбирался с плагином p01 contact переделал полностью файл .htaccess
Теперь вот такой код, в нем настроено htpp на htpps, без www на www, внутренние страницы с без слэша на слэш. С index.php на главную. При таком раскладе форма обратной связи работает норм

#
# 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
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1/ [R=301,L]
ErrorDocument 404 https://www.МОЙ САЙТ.ru/404.html
RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^МОЙ САЙТ\.ru$ [NC]
RewriteRule ^(.*)$ https://www.МОЙ САЙТ.ru/$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]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ https://www.МОЙ САЙТ.ru/$1 [R=301,L]
</IfModule>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript application/javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0678 no-gzip
BrowserMatch bMSIE gzip-only-text/html
<ifmodule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_item_include file \.js$
mod_gzip_item_include file \.css$ </IfModule>
</IfModule>
# Cache Headers
<ifmodule mod_headers.c>
  # Cache specified files for 31 days
  <filesmatch "\.(ico|flv|jpg|jpeg|png|gif|css|swf)$">
  Header set Cache-Control "max-age=2678400, public"
  </filesmatch>
  # Cache HTML files for a couple hours
  <filesmatch "\.(html|htm)$">
  Header set Cache-Control "max-age=7200, private, must-revalidate"
  </filesmatch>
  # Cache PDFs for a day
  <filesmatch "\.(pdf)$">
  Header set Cache-Control "max-age=86400, public"
  </filesmatch>
  # Cache Javascripts for 31 days
  <filesmatch "\.(js)$">
  Header set Cache-Control "max-age=2678400, private"
  </filesmatch>
</ifmodule>
<FilesMatch "\.(php)$">
    <IfModule mod_expires.c>
        ExpiresActive Off
    </IfModule>
    <IfModule mod_headers.c>
        Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform"
    </IfModule>
</FilesMatch>

Поделиться