301 редирект для мультиязычного сайта на Joomla 3 c 303 редиректом

myhelpers

Новичок
Здравствуйте, уважаемые!

Прошу помочь решить следующую насущную для мультиязычного сайта на Joomla 3 и, думаю, многих других CMS, проблему:
При создании нескольких языковых версий сайта средствами мультиязычности самой CMS получается следующее:
http://domain.ru -с русским языком
http://domain.ru/ru/-русская версия сайта(является основным языком сайта)
http://domain.ru/en/-английская версия сайта
http://domain.ru/de/-немецкая версия сайта
и если средствами Joomla 3 удалять префикс /ru/ из адресной строки, то срабатывает 303 редирект, что есть нехорошо, т.к. для SEO нужен 301 редирект.
Если же не убирать префикс в настройках Joomla 3, то будет существовать domain.ru/ru/ и domain.ru с русским языком, т.е. дубли.
Как посредством .htaccess убрать префикс /ru/, т.е. сделать 301 редирект с domain.ru/ru/ -> domain.ru и чтобы в последующем переключение языков на сайте было корректным.

В течение 2-x недель поиска информации в интернете опробовал разные куски кода в htaccess, но рабочего варианта так и не нашел.
Распишите, пожалуйста, подробно как решить эту проблему, т.к. с этим вопросом не могут справится куча народа, как в русскоязычном сегменте интернета, так и зарубежом, либо опишите другие возможные варианты решения. Если вам несложно, то вышлите мне решение на почту [email protected] , чтобы быстрее смог его реализовать.
Если для кого-то это тривиально, то простите за незнание! :)
 

myhelpers

Новичок
1. Приведите, пожалуйста, пример кода в htaccess, чтобы не убирать префикс, редиректить с / на /ru.
2. Как это решение повлияет на SEO сайта?
 

myhelpers

Новичок
Я же поэтому и написал выше "Распишите, пожалуйста, подробно как решить эту проблему, т.к. с этим вопросом не могут справится куча народа, как в русскоязычном сегменте интернета, так и зарубежом, либо опишите другие возможные варианты решения." и решил спросить здесь, тк не могу сделать сам.
 

AnrDaemon

Продвинутый новичок
Какая куча народа? Назовите по именам и покажите пальцем.
В чём сложность написать RedirectMatch permanent ^/$ http://example.com/ru/
?
 

myhelpers

Новичок
Благодарю Вас за ответ.
Загуглил по этому вопросу, правда, ответа нет. С этим многие столкнулись и не решили, хотя их ставили в пример в качестве мультиязычных сайтов на Joomla,
например, tensegrity-evolution.ru и www.arcanafactor.org (у обоих остался редирект 303).
Похожее решение пробовал, точно до символа не скажу, может быть ошибка была, попробую проверить.
Привожу свой нынешний htaccess

Options +FollowSymLinks
## Mod_rewrite in use.

RewriteEngine On

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

# Russian sitemap
RewriteCond %{REQUEST_URI} ^/sitemap.xml
RewriteRule .* /ru/index.php?option=com_xmap&id=1&view=xml&format=html [L]

# Belarus sitemap
RewriteCond %{REQUEST_URI} ^/by/sitemap.xml
RewriteRule .* /by/index.php?option=com_xmap&id=1&view=xml&format=html [L]

# English sitemap
RewriteCond %{REQUEST_URI} ^/en/sitemap.xml
RewriteRule .* /en/index.php?option=com_xmap&id=1&view=xml&format=html [L]

# Germany sitemap
RewriteCond %{REQUEST_URI} ^/de/sitemap.xml
RewriteRule .* /de/index.php?option=com_xmap&id=1&view=xml&format=html [L]

# Italy sitemap
RewriteCond %{REQUEST_URI} ^/it/sitemap.xml
RewriteRule .* /it/index.php?option=com_xmap&id=1&view=xml&format=html [L]

# Spanish sitemap
RewriteCond %{REQUEST_URI} ^/es/sitemap.xml
RewriteRule .* /es/index.php?option=com_xmap&id=1&view=xml&format=html [L]

# France sitemap
RewriteCond %{REQUEST_URI} ^/fr/sitemap.xml
RewriteRule .* /fr/index.php?option=com_xmap&id=1&view=xml&format=html [L]

# Poland sitemap
RewriteCond %{REQUEST_URI} ^/pl/sitemap.xml
RewriteRule .* /pl/index.php?option=com_xmap&id=1&view=xml&format=html [L]

## 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 request is for something within the component folder,
# or for the site root, or for an extensionless URL, or the
# requested URL ends with one of the listed extensions
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
# 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.

php_flag display_errors off
php_flag magic_quotes_gpc Off

Скажите ваш вариант вставлять нужно после RewriteEngine On или после RewriteBase / ?
 

myhelpers

Новичок
Кстати еще в Joomla 3 по умолчанию в htaccess # RewriteBase / закоментированио
-может быть нужно раскомментировать?
 

myhelpers

Новичок
Все-таки если не убирать префикс /ru/ и редиректить с / на /ru,
то поисковик воспринимает domain.ru и domain.ru/ru/ дублями, тк язык русский и контент одинаковый.
Нужно склеить как-то 301 редиректом domain.ru и domain.ru/ru/.
 

AnrDaemon

Продвинутый новичок
Какой контент одинаковый, если на / нет контента?…
 

myhelpers

Новичок
domain.ru и domain.ru/ru/ одинаковы. Если в настройках Joomla 3 не убирать префикс он перебрасывает с domain.ru на domain.ru/ru/,
но в индексе они дублируются и нужно сделать редирект с domain.ru/ru/ на domain.ru с 301 редиректом.
Проверить можно, например, программой Netpeak Spider на сайте tensegrity-evolution.ru в качестве подопытного.
 

AnrDaemon

Продвинутый новичок
Давайте вы не будете гнать пургу?…
На вашем подопытном нет редиректа.

Код:
<stdout>:curl -iI -s -- "http://tensegrity-evolution.ru/"
HTTP/1.1 200 OK
Date: Tue, 24 Mar 2015 22:11:08 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=5
Vary: Accept-Encoding
Server: Apache
Set-Cookie: c9a941938d171498514bb955a819fd02=qtkchf0kefb8tlvlvsliam3em1; path=/
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Cache-Control: no-cache, max-age=0
Pragma: no-cache
Expires: Tue, 24 Mar 2015 22:11:07 GMT
 

myhelpers

Новичок
Проверить большинство страниц можно, например, программой Netpeak Spider на сайте tensegrity-evolution.ru в качестве подопытного.
Другое дело, что недавно вышла Joomla 3.4, в которой якобы исправили баг (нужно протестировать). Вчера искал решение и нашел баг фикс на Joomla.org.
После обеда распишу подробнее что и как...
 

AnrDaemon

Продвинутый новичок
Знаете, как это выглядит с моей стороны экрана?
Я предложил решение, может и не проверенное, но теоретически работающее. (Кстати, сейчас проверил - работает.)
Вы утверждаете, что "но ведь не работает" и приводите в пример сайт, на котором ничего даже близкого к предложенному мной решению не сделано.
Знаете, мне плевать на "Netpeak Spider", что бы это ни было, версию джумлы и ссылки на их баги, которые они годами игнорят, типатакидолжнобыть.
Я не люблю, когда меня держат за идиота. Для меня это достаточная причина перестать помогать конкретному человеку.
 

myhelpers

Новичок
Благодарю вас за помощь, но я вам привел вполне весомые аргументы, которые вы игнорируете.
Впрочем, это неважно, важно, что решение найдено. :)
 

AnrDaemon

Продвинутый новичок
Я не увидел ни одного аргумента в пользу того, что моё решение нерабочее.
Вас не затруднит процитировать конкретно места, где это указывается?
 

myhelpers

Новичок
Я ничуть не говорю, что ваше предложение нерабочее,а наоборот - это часть решения, но оно компромиссное (сейчас важно учитывать SEO),
а после обновления Joomla (если в версии Joomla 3.4 это уже устранили) все станет работать как и должно было.
Вечером опишу подробнее компромиссный вариант, а если успею протестировать Joomla 3.4.1, то и устранен ли этот баг в новой версии.
 

AnrDaemon

Продвинутый новичок
В чём именно оно компромиссное, уточните пожалуйста?
 
Сверху