( ! ) Notice: Constant LARAVEL_START already defined in /home/djsante/sites/megaweb.pro/bootstrap/autoload.php on line 3
Call Stack
#TimeMemoryFunctionLocation
10.0003360992{main}( ).../index.php:0
20.0010361848require( '/home/djsante/sites/megaweb.pro/bootstrap/autoload.php' ).../index.php:24
30.0010361848define ( ).../autoload.php:3
301 редирект на каждый случай - Студия MegaWeb

301 редирект на каждый случай

301 редирект на каждый случай
301 редирект на каждый случай

301-ый редирект (301 Permament Redirect), возвращаемый при обращении к определенной странице сайта, означает, что интернет-ресурс на постоянной основе перенесли на новый адрес, тоже указанный в HTTP заголовке. Как юзеры, зашедшие через браузер, так и боты поисковых систем будут перенаправляться на новый адрес. При этом, для поисковиков весь вес старой ссылки будет передан новой. При 301-ом перенаправлении произойдет склейка старого адреса с новым - параметры тИЦ, вес страницы (в том числе и ссылочный) будет со старого передан новому урл.

Редирект 301 - это лучший способ сохранить репутацию сайта "в глазах" поисковых систем, при переносе ресурса на новый домен, смене протокола c http на https либо наоборот или смене платформы-движка сайта (CMS). Переадресацию можно осуществить несколькими способами, решающую роль выбора здесь играет предустановленное программное обеспечение.

301 редирект через конфигурационный файл .htaccess

При использовании веб-сервера Apache, переадресацию можно делать с помощью .htaccess, но не забыв предварительно включить в php.ini модули mod_alias и mod_rewrite (для поддержки директив Redirect, RedirectMatch, RedirectPermanent и реврайта).

Редирект с помощью директивы Redirect или RedirectPermanent модуля mod_alias:

Redirect 301 /old-url.html http://mysite.com/new-url.html

или

Redirect permanent /old-url.html http://mysite.com/new-url.html

Но в этом методе есть существенный недостаток - все ссылки, которые нам нужно перенаправить, придется перечислять вручную, каждую по отдельности. Также, для аналогичных целей, можно использовать RedirectPermanent.

RedirectPermanent /old-url.html http://mysite.com/new-url.html

Редирект с помощью RedirectMatch

Данный редирект похож на предыдущий, но есть одно исключение - здесь для старых ссылок можно задавать регулярные выражения. Например, вы добавили товар Virtuemart в две категории и у вас образовались дубли - один и тот же товар доступен по двум разным адресам http://mysite.com/category/product.html и http://mysite.com/sale/product.html. (Так бывает с Joomla-компонентом Virtuemart, это не моя фантазия.) Сам столкнулся вот.) RedirectMatch решает проблему так:

RedirectMatch 301 ^/sale/(.*) /category/$1

или наоборот

RedirectMatch 301 ^/category/(.*) /sale/$1

Все зависит от того, в какую категорию интернет-магазина вы будете делать перенаправление.

Если ваш сайт переехал на новый движок или по другой какой-то причине поменялось расширение файлов сайта с php на html, то вот вам редиректмач:

RedirectMatch /(.*).php$ /$1.html

или вот

RedirectMatch 301 (.*)\.php$ http://mysite.com$1.html

ЗЫ. Кстати, это вполне реальная ситуация. Например, я сейчас из Joomla перешел на фреймворк Laravel, хочу его выучить и верстать как передовик.. Как раз тот случай, там шаблонизатор на html и все в таком роде. Правда, джумлу я туда не переношу, пишу с нуля сайт, чтобы начать понимать хоть сколько-то специфику работы этого отличного фреймворка и чтобы полностью знать свое творение и, в случае чего, "тэкс, ага это там, это там у нас, это так работает, а это то делает".)))

Перенаправление с помощью директивы RewriteRule модуля mod_rewrite

Перед использованием RewriteRule нужно проверить, подключен ли модуль mod_rewrite в httpd.conf и влючена ли опция FollowSymLinks. Использование mod_rewrite модуля дает много возможностей для перенаправления старых ссылок на новые адреса.

Редирект сайта с www на без www

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.(.*)  [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

или такой код еще работает

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R,L]

альтернативный вариант, здесь синтаксис более понятен

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.mysite.com$ [NC]
RewriteRule ^(.*)$ http://mysite.com/$1 [R=301,L]

301 редирект сайта через .htaccess с mysite.com на www.mysite.com

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mysite.com$ [NC]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301,L]

или альтернативный вариант

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

Перенаправление дублей главной страницы

Этот код любой URL-адрес главной страницы, который изначально имеет несколько вариантов таких как index.php, index.html, home.htm, default.html и т.д., будет перенаправлен на главную каноническую страницу http://mysite.com.

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\/([^/]+/)*(home|index|default|main)\.(htm|html|php)\ HTTP/[NC]
RewriteRule ^(([^/]+/)*)(home|index|default|main)\.(htm|html|php)$ http://mysite.com/$1[L,R=301]

Если не будет работать код, то вот так еще попробуйте:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /home|index|default|main\.htm|html|php\ HTTP/ 
RewriteRule ^home|index|default|main\.htm|html|php$ http://mysite.com/ [R=301,L]

301-й редирект с http на https

Сейчас модно покупать ssl-сертификаты и переводить свои сайты на https. Это действительна хорошая и нужная вещь, поскольку протокол защищенного интернет-соединения ssl обеспечивает конфиденциальный обмен данными между клиентом и сервером. В связи с чем появилась необходимость настраивать 301-й редирект со старого адреса http://mysite.com на новый https://mysite.com/.

Для этих манипуляций существует огромное количество возможностей и комбинаций перенаправления. Рассмотрим самые распространенные.

Некоторые хостинг-провайдеры предоставляют своим клиентам возможность настроить редирект в панели управления. Так, конечно, проще всего))

Итак, первый вариант 301-го редиректа с помощью .htaccess:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Правило работает, практически, всегда, но на одном своем проекте я все-таки столкнулся с тем, что код не работал, а происходила циклическая переадресация. О причине ниже.. Тогда мне посоветовали вот такой код::

RewriteEngine On
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

который тоже оказался недееспособным. А вот этот код 301 редиректа с http:// на https://

RewriteEngine On
RewriteCond %{ENV:HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

устроил меня целиком.

Еще можно настроить редирект не через .htaccess файл, а с помощью php:

if(!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == ""){
    $redirect = "https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: $redirect");
}

или

if ($_SERVER["SERVER_PORT"] != 443) {
    $redir = "Location: https://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
    header($redir);
    exit();
}

Тут все будет зависеть от сервера вашего хостинг-провайдера и его правильной настройки. Бывают случаи, когда сервер просто-напросто не отдает параметр $_SERVER['HTTPS'] и не меняет протокол с 80 на 443.

Posted in Internet, PHP on мар 05, 2018

Related posts

  • amazon (4)
  • joomla (4)
  • компьютер (4)
  • google (4)
  • ajax (2)