И снова 301 редирект с www на без www

  • 14 Ответов
  • 749 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

Нигде не нашёл ответа.
Настроил редирект:
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

Возникла проблема:
при вводе адреса:
www.site.ru/subpage/

перенаправляет не на
site.ru/subpage

а на главную страницу:
site.ru

Кто сталкивался с данной проблемой? как решили?
Подскажите!

*

kik84

  • ******
  • 1267
  • 59
Re: И снова 301 редирект с www на без www
« Ответ #1 : 29.12.2015, 01:22:43 »
RewriteCond %{HTTP_HOST} ^www.site\.ru
RewriteRule ^(.*)$ http://site.ru/$1 [R=permanent,L]
После www слеш лишний.

*

robert

  • ********
  • 4002
  • 371
Re: И снова 301 редирект с www на без www
« Ответ #2 : 29.12.2015, 02:08:35 »
kik84, причем тут слэш? И почему он лишний?
semalexandro, для site.ru/subpage: %{HTTP_HOST}=site.ru.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

flyingspook

  • ********
  • 3606
  • 236
Re: И снова 301 редирект с www на без www
« Ответ #3 : 29.12.2015, 10:40:18 »
Вот так должно работать
Код
RewriteCond %{HTTP_HOST} ^www.site.ru
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

Re: И снова 301 редирект с www на без www
« Ответ #4 : 29.12.2015, 10:46:20 »
А можно ещё короче:

Код
RewriteCond %{HTTP_HOST} ^www
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
Ставь лайк, если согласен, и делай репост!

  => мои публикации
    => мои работы
      => спектр моих услуг

*

dmitry_stas

  • ********
  • 9626
  • 929
Re: И снова 301 редирект с www на без www
« Ответ #5 : 02.01.2016, 13:11:22 »
А можно ещё короче:
если hostname начинается на www (например http://www2.ru/), то будет ошибка. нужна точка.

Код
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

Re: И снова 301 редирект с www на без www
« Ответ #6 : 13.01.2016, 15:12:57 »
проблема так и не решена, настроил склейку следующим образом:
Код
RewriteCond %{HTTP_HOST} ^www\./heidolph-rus\.ru$ [NC]
RewriteRule ^(.*)$ http:///heidolph-rus.ru/$1 [R=301,L]

Redirect 301 index.php http://heidolph-rus.ru
RewriteRule ^index.php/(.*)$ http://heidolph-rus.ru/$1 [R=permanent,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://heidolph-rus.ru [R=301,L]

При вводе адреса:
www.heidolph-rus.ru/oborudovanie
Ведёт на heidolph-rus.ru

При вводе адреса:
www.heidolph-rus.ru/index.php/oborudovanie
Ведёт на heidolph-rus.ru/oborudovanie
т.е. вроде как работает только с index.php






*

dmitry_stas

  • ********
  • 9626
  • 929
Re: И снова 301 редирект с www на без www
« Ответ #7 : 13.01.2016, 15:25:38 »
по редиректу с www на без www - я написал полностью рабочий вариант.

по редиректу типа /index.php/oborudovanie на /oborudovanie (т.е. если надо просто убрать index.php из таких ссылок) достаточно простого
Код
RedirectMatch 301 ^/index.php/(.*) http://heidolph-rus.ru/$1

по редиректу http://heidolph-rus.ru/index.php на http://heidolph-rus.ru/ (т.е. когда index.php и больше ничего нет) нужна обязательно дополнительная проверка на POST, и редирект только если в POST ничего не содержится. иначе нарветесь на неправильную отправку многих форм
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

Re: И снова 301 редирект с www на без www
« Ответ #8 : 13.01.2016, 18:14:45 »
Этот редирект:
Код
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
как и любые другие варианты редиректа с www на без www:
1. в случае www.heidolph-rus.ru/oborudovanie ведёт на heidolph-rus.ru
2. в случае www.heidolph-rus.ru/index.php/oborudovanie ведёт на heidolph-rus.ru/index.php/oborudovanie
т.е. получается работает только для алисов с index.php

добавляю:
Код
RewriteRule ^index.php/(.*)$ http://heidolph-rus.ru/$1 [R=permanent,L]
1. в случае www.heidolph-rus.ru/oborudovanie ведёт на heidolph-rus.ru/index.php
2. в случае www.heidolph-rus.ru/index.php/oborudovanie ведёт на heidolph-rus.ru/oborudovanie
т.е. опять корректно срабатывает при наличии в алиасе index.php

*

dmitry_stas

  • ********
  • 9626
  • 929
Re: И снова 301 редирект с www на без www
« Ответ #9 : 13.01.2016, 18:31:21 »
Цитировать
получается работает только для алисов с index.php
а что, вы видите в этом редиректе упоминание об index.php? этому редиректу абсолютно все равно ваш index.php. ищите у себя другие редиректы которые касаются этого. этот редирект работает именно так, как я указал - с www на без www, и все.

удалите все редиректы, очистите кеш, убедитесь что ничего никуда не переадресовывает. начните добавлять по одному редиректы.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

flyingspook

  • ********
  • 3606
  • 236
Re: И снова 301 редирект с www на без www
« Ответ #10 : 13.01.2016, 18:44:42 »
@semalexandro
htaccess свой покажите
и в панели управления какие настройки у вас стоят?

Re: И снова 301 редирект с www на без www
« Ответ #11 : 14.01.2016, 13:22:17 »
htaccess:
Код
##
# @package    Joomla
# @copyright  Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved.
# @license    GNU General Public License version 2 or later; see LICENSE.txt
##

##
# READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE!
#
# The line just below this section: 'Options +FollowSymLinks' may cause problems
# with some server configurations.  It is required for use of mod_rewrite, but may already
# be set by your server administrator in a way that dissallows changing it in
# your .htaccess file.  If using it causes your server to error out, comment it out (add # to
# beginning of line), reload your site in your browser and test your SEF url's.  If they work,
# it has been set by your server administrator and you do not need it set here.
##

## Can be commented out if causes errors, see notes above.
Options +FollowSymLinks

## Mod_rewrite in use.

RewriteEngine On

## Begin - Rewrite rules to block out some common exploits.
# If you experience problems on your site block out the operations listed below
# This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]
#
## End - Rewrite rules to block out some common exploits.

## Begin - Custom redirects
#
# If you need to redirect some pages, or set a canonical non-www to
# www redirect (or vice versa), place that code here. Ensure those
# redirects use the correct RewriteRule syntax and the [R=301,L] flags.
#
## End - Custom redirects

##
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root).
##

# RewriteBase /

## Begin - Joomla! core SEF Section.
#
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule .* index.php [L]
#
## End - Joomla! core SEF Section.

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !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>
<ifModule mod_expires.c>
    ExpiresActive On
    #по умолчанию кеш в 5 секунд
    ExpiresDefault "access plus 5 seconds"
    # Включаем кэширование изображений и Flash на месяц
    ExpiresByType image/x-icon "access plus 1 month"
    ExpiresByType image/jpeg "access plus 4 weeks"
    ExpiresByType image/png "access plus 30 days"
    ExpiresByType image/gif "access plus 43829 minutes"
    ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
    # Включаем кэширование CSS, javascript и текстовых файлоф на одну неделю
    ExpiresByType text/css "access plus 604800 seconds"
    ExpiresByType text/javascript "access plus 604800 seconds"
    ExpiresByType application/javascript "access plus 604800 seconds"
    ExpiresByType application/x-javascript "access plus 604800 seconds"
    # Включаем кэширование HTML и htm файлов на один день
    ExpiresByType text/html "access plus 43200 seconds"
    # Включаем кэширование XML файлов на десять минут
    ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteRule ^index.php/(.*)$ http://heidolph-rus.ru/$1 [R=permanent,L]

Настройки SEO:
Включить SEF (ЧПУ)
Да
Перенаправление URL
Да
Добавлять суффикс к URL
Нет
Алиасы в Unicode
Нет



*

flyingspook

  • ********
  • 3606
  • 236
Re: И снова 301 редирект с www на без www
« Ответ #12 : 14.01.2016, 13:52:25 »
Раскоментируйте
Код
# RewriteBase /
поднимите на верх
Код
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteRule ^index.php/(.*)$ http://heidolph-rus.ru/$1 [R=permanent,L]
под
Код
RewriteEngine On

у вас два раза прописаны сверху и снизу
Код
Options +FollowSymLinks
RewriteEngine On
хватит один раз то что вверху и после них сразу редиректы пишите

Re: И снова 301 редирект с www на без www
« Ответ #13 : 14.01.2016, 15:14:58 »
Раскоментируйте
Код
# RewriteBase /
поднимите на верх
Код
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteRule ^index.php/(.*)$ http://heidolph-rus.ru/$1 [R=permanent,L]
под
Код
RewriteEngine On

у вас два раза прописаны сверху и снизу
Код
Options +FollowSymLinks
RewriteEngine On
хватит один раз то что вверху и после них сразу редиректы пишите

Помогло! Спасибо!
Еще необходимые параметры в админке
Перенаправление URL:
Нет

« Последнее редактирование: 14.01.2016, 15:19:25 от semalexandro »

Re: И снова 301 редирект с www на без www
« Ответ #14 : 14.01.2016, 15:27:47 »
Нигде не нашёл единого решения, поэтому оставлю здесь, может поможет кому-то.
Мой вариант стандартной склейки:
Настройки SEO в админке joomla:

Настройки SEO
Включить SEF (ЧПУ)
Да
Перенаправление URL
Нет - оказалось что при включении получается конфликт редиректов
Добавлять суффикс к URL
Нет
Алиасы в Unicode
Нет

в .htaccess:
Прописываем
Код
RewriteBase /
RewriteEngine On
ниже:
редирект с www на без www:
Код
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Убираем index.php со всех страниц кроме главной:
Код
RewriteRule ^index.php/(.*)$ http://site.ru/$1 [R=permanent,L]
Убираем index.php с главной страницы:
Код
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://site.ru/ [R=301,L]

Убираем слеш в конце  страницы:
Код
RewriteRule ^(.*)/$ /$1 [R=301,L]