Перейти к содержимому


Фото
* * * * * 1 голосов

Убираем слэш(и) в конце url и избавляемся от дублей

дубли url слеш слэш php index.php

  • Чтобы отвечать, сперва войдите на форум
26 ответов в теме

#21 miltonmors

miltonmors
  • Забаненый
  • 91 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Николаев

Опубликовано 01.12.2017 - 15:32

+ к вышеизложенному, preg_replace также как и preg_match использует больше ресурсов. Да и зачем вобще в этом деле использовать эти функции? Всё что нам надо это узнать есть ли в конце слешь и какая категория идёт первая.

+ считаю что вызов 6-ти функций, дольше чем вызов трёх (с учётом простой array_filter).

 

Формально Вы правы, но собственно экономия тут мизерная.

 

В Вашем последнем варианте из #20 используется 5 функций: array_values, array_filter, explode, substr, implode. если уж наводить экономию, то как-то получше, примерно так:

 

$serv_uri = $_SERVER["REQUEST_URI"];
if($serv_uri && substr($serv_uri, 0,7) !='/simpla'){
	$uri = rtrim($serv_uri, "/");
	if($serv_uri != $uri){
		header("Location: ".$uri);
		exit();
	}
}


#22 a13x

a13x
  • Забаненый
  • 213 сообщений
  • Дизайн, Программирование, Верстка, SEO, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 03.12.2017 - 18:12

Согласен, либо просто не использовать array_filter и array_values и проверять по 1-ом индексу массива, а не по нулевому.

$serv_uri = $_SERVER["REQUEST_URI"];
$uri = explode("/", $serv_uri);
if($serv_uri != "/" && substr($serv_uri, -1) == "/" && $uri[1] != 'simpla')){
    header("Location: /".implode("/",$uri), true, 301);
    exit();
}

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

Собственно url rewrite который я пишу будет также работать.

 

 

if($serv_uri....

p.s. $serv_uri есть всегда, даже при загрузке индексной страницы он равен "/", поэтому эта проверка всегда будет возвращать true.


Изменено: a13x, 03.12.2017 - 18:14


#23 makki

makki
  • Пользователь
  • 20 сообщений
  • Пользователь
  • Откуда:Kiev

Опубликовано 12.02.2018 - 13:22

RewriteCond %{REQUEST_URI} !^/simpla
RewriteRule (.+)/$ /$1 [L,R=301]


#24 Плохиш

Плохиш
  • Забаненый
  • 98 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Орел

Опубликовано 12.02.2018 - 14:04

RewriteCond %{REQUEST_URI} !^/simpla
RewriteRule (.+)/$ /$1 [L,R=301]

 

Если встретится статичная страница с адресом, например,  //site.ru/simpla_and_templates/,  то не сработает правило.



#25 makki

makki
  • Пользователь
  • 20 сообщений
  • Пользователь
  • Откуда:Kiev

Опубликовано 12.02.2018 - 14:07

Разве такие страницы есть изначально в Simpla?

 

Если решать это посредством PHP такой проблемы не будет?


Изменено: makki, 12.02.2018 - 14:52


#26 Плохиш

Плохиш
  • Забаненый
  • 98 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Орел

Опубликовано 12.02.2018 - 15:27

Разве такие страницы есть изначально в Simpla?

 

Не понял смысла Вашего вопроса.

Таких страниц изначально нет. Но Simpla как CMS предназначена для того, чтобы админ вводил разные данные. В частности, он может для своих целей создать и такую страницу.
 

Если решать это посредством PHP такой проблемы не будет?

 

Зависит от того, как решать...



#27 makki

makki
  • Пользователь
  • 20 сообщений
  • Пользователь
  • Откуда:Kiev

Опубликовано 12.02.2018 - 15:35

Не понял смысла Вашего вопроса.

Таких страниц изначально нет. Но Simpla как CMS предназначена для того, чтобы админ вводил разные данные. В частности, он может для своих целей создать и такую страницу.

 

Можно создавать страницы средствами CMS через админку а можно и как-то по другому. Но не в этом дело. На самом деле я изначально не понял почему это реврайт не сработает для статичной страницы //site.ru/simpla_and_templates/

 

Зависит от того, как решать...

 

Решать так как здесь предлагают в ветке.

$serv_uri = $_SERVER["REQUEST_URI"];
if($serv_uri && substr($serv_uri, 0,7) !='/simpla'){
	$uri = rtrim($serv_uri, "/");
	if($serv_uri != $uri){
		header("Location: ".$uri);
		exit();
	}
}






Также с меткой «дубли, url, слеш, слэш, php, index.php»

0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых