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

20strannik08

  • Осваиваюсь на форуме
  • 41
  • 1
Уже всю голову себе переломал, пытаюсь бороться с дублями такого вида:
site.ru/category/document.html(более правильный вариант, все остальное беда...)
site.ru/category/document/
site.ru/category/document

site.ru/index.php/category/document.html
site.ru/index.php/category/document/
site.ru/index.php/category/document

Решил копать в сторону редиректов nginx, и удалось добится редиректа окончания расширения адреса любого отличного от *.html на него самого же, вот таким путем:
Спойлер
[свернуть]

Не знаю на сколько это верное решение...Но я не могу понять как вырезать /index.php/ из url? Может кто подскажет?

На сервере стоит nginx+php-fpm, Joomla 3.5

P.S. В качестве главной стоит joomsopping, canonical чудит и везде указывает адрес на самого себя и даже на дублях, что в самом магазине что в родных пунктах Joomla. От того и встал вопрос решить это редиректами...
*

20strannik08

  • Осваиваюсь на форуме
  • 41
  • 1
Может кто-нибудь знает решение под апач? Я бы его попробовал переконвертировать под nginx...  :'(
« Последнее редактирование: 12.06.2016, 19:00:11 от 20strannik08 »
*

Филипп Сорокин

  • Практически профи
  • 1816
  • 138
Зачем вы засунули редиректы в локацию по умолчанию? Они должны быть выше всех локаций:
Код
location ~ ^/index\.php/(.*) {
    Return 301 http://site.ru/$1;
}
Ставь лайк, если согласен, и делай репост!

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

20strannik08

  • Осваиваюсь на форуме
  • 41
  • 1
Спасибо вам добрый человек)
Сделал вот так...:
Спойлер
[свернуть]

Но теперь получается что если зайти по адресу http://site.ru/index.php/category/document, то получится двойной редирект, сначала он перенаправит на:
http://site.ru/category/document, а потом на:
http://site.ru/category/document.html
В остальных случаях все впорядке...
Можно ли сделать так что бы в данном случае за один редирект выполнялся переход на конечную страницу с расширением *.html, и аналогично если страница изначально была с расширением *.html, то так же на нее саму и направлять?
« Последнее редактирование: 13.06.2016, 08:56:05 от 20strannik08 »
*

Филипп Сорокин

  • Практически профи
  • 1816
  • 138
Код
location ~* ^/index\.php/(.+?)(\.html)?$ {
    Return 301 http://site.ru/$1.html;
}
Ставь лайк, если согласен, и делай репост!

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

pavelrer

  • Завсегдатай
  • 412
  • 8
$httpUrl = ($_SERVER['REQUEST_URI']);
$pos = strpos($httpUrl, 'index');
if ($pos === false)
else { $doc =& JFactory::getDocument();$doc->setMetaData( 'robots', 'noindex, nofollow' );}

я делаю, как-то так для поисковиков срабатывает, если index где-то еще вылезти то то же в индекс поиска не попадет.
(но это если uri с "index" это копии, если это единичный экземпляр то он то же получит noindex, nofollow)
Для меня проще так.

*

20strannik08

  • Осваиваюсь на форуме
  • 41
  • 1
pavelrer: noindex мне кажется не всегда самая лучшая идея)

Филипп Сорокин: По вашему наставлению, остальные реврайты переделал в том же стиле:
Код
location ~* ^/index\.php/(.+?)(\.html)?$ {
    return 301 https://magiaelements.ru/$1.html;
}

location ~* ^/([^.\?]*[^/])$ {
    return 301 https://magiaelements.ru/$1.html;
}

location ~* (.+)/$ {
return 301 https://magiaelements.ru/$1.html;
}

В итоге все заработало как надо) Появилась другая проблема...Jcomments установленный на сайте отказывается работать...Нельзя через фронт в форму отправить комментарии, после отправки он уходит в думки...Поэксперементировав пришел к выводу что ему не нравится вот этот редирект:
Код
location ~* (.+)/$ {
return 301 https://magiaelements.ru/$1.html;
}

Который удаляет слеш на конце url и переводит адрес в *.html. Вот незадача...
« Последнее редактирование: 14.06.2016, 19:26:45 от 20strannik08 »
*

pavelrer

  • Завсегдатай
  • 412
  • 8
Цитировать
noindex мне кажется не всегда самая лучшая идея)

Ну я как вариант, почему так делаю, у меня VM дык он дули со словом manufacture делает, и их много
на один и тот же товар или категорию. Ну таким методом из индекса отлетает все дубли.

Вот бы кто объяснил откуда так много дублей.
Вот допустим категории есть алиас он нормально url а вот в крошках он хрен знает какой.
вычитал но пока не дошел что в Joomla типа есть функция которая возвращает нормальный url, просто надо допилить крошки.
Дак чтож все модули и компоненты пилить.

*

Филипп Сорокин

  • Практически профи
  • 1816
  • 138
А есть ещё и физические директории: они всегда со слэшем на конце. Вас выручит безопасный if внутри локации:

Код: php
location ~* ^(?!/component/)(.+?)/+$ {
    if (!-d $request_filename) {
        return 301 https://magiaelements.ru/location ~* ^(?!/component/)(.+?)/+$ {
    if (!-d $request_filename) {
        return 301 https://magiaelements.ru/$1.html;
    }
}.html;
    }
}
Ставь лайк, если согласен, и делай репост!

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

pavelrer

  • Завсегдатай
  • 412
  • 8
Проникся БЛИН.
Ведь в моем способе допустим робот зашел потратил ресурс и ни че не сделал.
А в вашем, попадет на целевую страницу.

Пошел штудировать, Спасибо за тему.
*

Филипп Сорокин

  • Практически профи
  • 1816
  • 138
Проникся БЛИН.
Ведь в моем способе допустим робот зашел потратил ресурс и ни че не сделал.
А в вашем, попадет на целевую страницу.

Пошел штудировать, Спасибо за тему.

Noindex хорошее решение. Вы всё правильно говорите.
Ставь лайк, если согласен, и делай репост!

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

pavelrer

  • Завсегдатай
  • 412
  • 8
 ;D Спасибо, тоды пойду пивка наверну  ;D
*

20strannik08

  • Осваиваюсь на форуме
  • 41
  • 1
pavelrer: У меня в jomsopping тоже есть дубли по той же аналогии с категориями, я их теперь та кже как с index.php устраняю+ тщательно прописал robots.txt, в остальной ужас дублей не суюсь, т.к. Яндекс более или менее правильно все проиндекцировал + перепроверяю ссылки в индексе)

Филипп Сорокин, спасибо вам еще раз, публикую конечный вариант, вдруг кому пригодится если кто задумает ставить Joomla на nginx), все проблемы решены!

Код
location ~* ^/index\.php/(.+?)(\.html)?$ {
    return 301 https://magiaelements.ru/$1.html;
}

location ~* ^/([^.\?]*[^/])$ {
    return 301 https://magiaelements.ru/$1.html;
}

location ~* ^(?!/component/)(.+?)/+$ {
    if (!-d $request_filename) {
        return 301 https://magiaelements.ru$1.html;
    }
}

P.S. Надеюсь мой путь не хуже. На счет noindex, мне кажется про robots.txt тут тоже не нужно забывать) Я поздно сподхватился, и есть страницы в индексе по ненужным адресам, вот и хочу все починить как надо с сохранением позиций страниц по запросам.
« Последнее редактирование: 14.06.2016, 20:35:59 от 20strannik08 »
*

pavelrer

  • Завсегдатай
  • 412
  • 8
Ну и я суды вопросик по своему методу.
В общем мой способ ищет в URL строку, в данном случаи "index"
но если в url до "index" есть знак вопроса или равно то поиск заканчивается и ничего не происходит.
Не супер силен в синтаксисе php, че накопал то написал  ;D

В общем моим методом не могу убить вот эти странички.
http://домен/abb-info?tmpl=component

т.е это странички которые вылетают в модалку, хотелось бы чтою искал
"tmpl" ну и noidex.
как можно поправить мой вариант.
просто в robots.txt все не пропишешь, сил не хватит.

вот еще только обнаружил одна одинокая, http://домен/?search_term_string
тут тоже чертов вопрос

Спасибо
*

voland

  • Профи
  • 9524
  • 422
  • Эта строка съедает место на вашем мониторе
Ничего не понял, тут все еще nginx обсуждается или уже нет?
*

Филипп Сорокин

  • Практически профи
  • 1816
  • 138
Ну и я суды вопросик по своему методу.
В общем мой способ ищет в URL строку, в данном случаи "index"
но если в url до "index" есть знак вопроса или равно то поиск заканчивается и ничего не происходит.
Не супер силен в синтаксисе php, че накопал то написал  ;D

В общем моим методом не могу убить вот эти странички.
http://домен/abb-info?tmpl=component

т.е это странички которые вылетают в модалку, хотелось бы чтою искал
"tmpl" ну и noidex.
как можно поправить мой вариант.
просто в robots.txt все не пропишешь, сил не хватит.

вот еще только обнаружил одна одинокая, http://домен/?search_term_string
тут тоже чертов вопрос

Спасибо

Ну и что, не получается проверить GET-параметр?
Код
if(isset($_GET['tmpl']))
{
   ...
}
Ставь лайк, если согласен, и делай репост!

  => мои публикации
    => мои работы
      => спектр моих услуг
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Перенаправление url при смене версии Joomla и прежней структуры сайта

Автор Afman

Ответов: 20
Просмотров: 342
Последний ответ 23.09.2017, 08:15:02
от voland
Notice: Undefined offset: 1 in /libraries/joomla/environment/browser.php on line 282

Автор planetaryi

Ответов: 3
Просмотров: 249
Последний ответ 17.09.2017, 11:24:53
от botva
Вместо сайта отображается форма Joomla

Автор sts34

Ответов: 15
Просмотров: 208
Последний ответ 06.09.2017, 11:27:48
от lexxbry
Joomla 3.7 Баги с отображением полей

Автор yarek

Ответов: 0
Просмотров: 79
Последний ответ 29.08.2017, 21:24:31
от yarek
Замаскировать Joomla, например, под битрикс

Автор dm-krv

Ответов: 23
Просмотров: 315
Последний ответ 29.08.2017, 19:15:33
от dmitry_stas