Форум русской поддержки Joomla!® CMS
04.12.2016, 18:17:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

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

 (Прочитано 460 раз)
0 Пользователей и 1 Гость смотрят эту тему.
semalexandro
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 19


« : 28.12.2015, 16:57:12 »

Нигде не нашёл ответа.
Настроил редирект:
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
Живу я здесь
******

Репутация: +59/-4
Offline Offline

Сообщений: 1307



« Ответ #1 : 29.12.2015, 00:22:43 »

RewriteCond %{HTTP_HOST} ^www.site\.ru
RewriteRule ^(.*)$ http://site.ru/$1 [R=permanent,L]
После www слеш лишний.
Записан
robert
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3568


« Ответ #2 : 29.12.2015, 01:08:35 »

kik84, причем тут слэш? И почему он лишний?
semalexandro, для site.ru/subpage: %{HTTP_HOST}=site.ru.
Записан
flyingspook
Профи
********

Репутация: +226/-9
Offline Offline

Сообщений: 3525


« Ответ #3 : 29.12.2015, 09:40:18 »

Вот так должно работать
Код:
RewriteCond %{HTTP_HOST} ^www.site.ru
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Online Online

Пол: Мужской
Сообщений: 1444


« Ответ #4 : 29.12.2015, 09:46:20 »

А можно ещё короче:

Код:
RewriteCond %{HTTP_HOST} ^www
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
Записан
dmitry_stas
Профи
********

Репутация: +795/-4
Offline Offline

Сообщений: 7741



« Ответ #5 : 02.01.2016, 12:11:22 »

А можно ещё короче:
если hostname начинается на www (например http://www2.ru/), то будет ошибка. нужна точка.

Код:
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Записан
semalexandro
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 19


« Ответ #6 : 13.01.2016, 14: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
Профи
********

Репутация: +795/-4
Offline Offline

Сообщений: 7741



« Ответ #7 : 13.01.2016, 14: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 ничего не содержится. иначе нарветесь на неправильную отправку многих форм
Записан
semalexandro
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 19


« Ответ #8 : 13.01.2016, 17: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
Профи
********

Репутация: +795/-4
Offline Offline

Сообщений: 7741



« Ответ #9 : 13.01.2016, 17:31:21 »

Цитировать
получается работает только для алисов с index.php
а что, вы видите в этом редиректе упоминание об index.php? этому редиректу абсолютно все равно ваш index.php. ищите у себя другие редиректы которые касаются этого. этот редирект работает именно так, как я указал - с www на без www, и все.

удалите все редиректы, очистите кеш, убедитесь что ничего никуда не переадресовывает. начните добавлять по одному редиректы.
Записан
flyingspook
Профи
********

Репутация: +226/-9
Offline Offline

Сообщений: 3525


« Ответ #10 : 13.01.2016, 17:44:42 »

@semalexandro
htaccess свой покажите
и в панели управления какие настройки у вас стоят?
Записан
semalexandro
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 19


« Ответ #11 : 14.01.2016, 12: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
Профи
********

Репутация: +226/-9
Offline Offline

Сообщений: 3525


« Ответ #12 : 14.01.2016, 12: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
хватит один раз то что вверху и после них сразу редиректы пишите
Записан
semalexandro
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 19


« Ответ #13 : 14.01.2016, 14: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, 14:19:25 от semalexandro » Записан
semalexandro
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 19


« Ответ #14 : 14.01.2016, 14: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]
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet