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

20strannik08

  • Осваиваюсь на форуме
  • 43
  • 1 / 0
Уже всю голову себе переломал, пытаюсь бороться с дублями такого вида:
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

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

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

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

20strannik08

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

Но теперь получается что если зайти по адресу 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 »
*

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

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Код
location ~* ^/index\.php/(.+?)(\.html)?$ {
    Return 301 http://site.ru/$1.html;
}
*

pavelrer

  • Давно я тут
  • 611
  • 10 / 2
$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

  • Осваиваюсь на форуме
  • 43
  • 1 / 0
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

  • Давно я тут
  • 611
  • 10 / 2
Цитировать
noindex мне кажется не всегда самая лучшая идея)

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

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

*

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

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
А есть ещё и физические директории: они всегда со слэшем на конце. Вас выручит безопасный 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

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

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

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

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

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

Noindex хорошее решение. Вы всё правильно говорите.
*

pavelrer

  • Давно я тут
  • 611
  • 10 / 2
 ;D Спасибо, тоды пойду пивка наверну  ;D
*

20strannik08

  • Осваиваюсь на форуме
  • 43
  • 1 / 0
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

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

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

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

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

Спасибо
*

voland

  • Легенда
  • 11030
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Ничего не понял, тут все еще nginx обсуждается или уже нет?
*

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

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

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

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

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

Спасибо

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

MichailPickStyle

  • Захожу иногда
  • 65
  • 2 / 0
Всем привет!
Подскажите пожалуйста, в чем может быть проблема:
склеиваю в nginx URL со слешем на конце, чтобы не было дублей следующим способом:
Код
merge_slashes off;
rewrite (.*)//+(.*) $1/$2 permanent;
rewrite ^/(.*)/$ /$1 permanent;
Все на первый взгляд норм, но перестает открываться админка, браузер пишет, что неверное перенаправление.
У меня, чтобы зайти в панель администратора нужно в URL передать GET параметр(типа для безопасности), выглядит это так: {сайт}/administrator?{пароль}
Получается, что после .../administrator автоматически вставляется "/" и видимо срабатывает мое перенаправление... Добрый человек из чата Joomla! в Телеграм подсказал, что у меня получается перенаправление при входе в панель администратора до того как отработал index.php, так как URL {сайт}/administrator/index.php?{пароль} открывает панель администратора. В nginx практически не силен, только начал разбираться(алгоритм отработки location для меня ад)) уже два дня голову ломаю над этой проблемой.
Привожу полный конфиг.
Спойлер
[свернуть]

Попробовал решение из ответа
публикую конечный вариант, вдруг кому пригодится если кто задумает ставить Joomla на nginx), все проблемы решены!
не вышло - внутренние страницы перестали открываться: слишком много раз сделано перенаправление.
Буду очень благодарен за помощь!
*

ChaosHead

  • Гуру
  • 5241
  • 451 / 13
Ничего не понял, тут все еще nginx обсуждается или уже нет?
Это перешедшие с Apache на nginx заново изобретают редиректы. Почитал я тему и решил, что пожалуй Apache меня устраивает)
*

MichailPickStyle

  • Захожу иногда
  • 65
  • 2 / 0
Все на первый взгляд норм, но перестает открываться админка, браузер пишет, что неверное перенаправление.
решил проблему тупо прописав:
Код
merge_slashes off;
if ($request_uri !~ /administrator) {
rewrite (.*)//+(.*) $1/$2 permanent;
rewrite ^/(.*)/$ /$1 permanent;
}
Прям в конфиг server. Умнее ничего не получилось придумать)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Что хранится в таблице overrider Joomla 3?

Автор web1

Ответов: 2
Просмотров: 199
Последний ответ 04.04.2024, 22:10:48
от web1
reCAPTCHA V2 Google - Для Joomla 3

Автор Alex GOOD

Ответов: 35
Просмотров: 8338
Последний ответ 10.01.2024, 21:41:38
от Vastriet
Joomla 3.10.12 и MySQL 8

Автор designer71

Ответов: 0
Просмотров: 396
Последний ответ 19.10.2023, 11:25:18
от designer71
Почему Joomla не поддерживает формат webp?

Автор Sensession

Ответов: 74
Просмотров: 10627
Последний ответ 03.10.2023, 19:44:42
от fsv
erid в Joomla

Автор newalex

Ответов: 0
Просмотров: 322
Последний ответ 25.09.2023, 18:45:34
от newalex