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


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

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

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

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

#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
  • Пользователь
  • 21 сообщений
  • Пользователь
  • Откуда: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
  • Пользователь
  • 21 сообщений
  • Пользователь
  • Откуда: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
  • Пользователь
  • 21 сообщений
  • Пользователь
  • Откуда: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();
	}
}


#28 georgeamsu

georgeamsu
  • Пользователь
  • 1 сообщений
  • Заказчик
  • Откуда:г. Благовещенск

Опубликовано 14.06.2018 - 00:52

подскажите пожалуйста, а как убрать слэши в середине адреса? типа: сайт/products////////goods/potatoes



#29 shooroop

shooroop
  • Фрилансер
  • 685 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Antarktida

Опубликовано 14.06.2018 - 09:27

подскажите пожалуйста, а как убрать слэши в середине адреса? типа: сайт/products////////goods/potatoes

 

смотрите в админке у вас goods если это бренд то у этого бренда в url стоит адрес ///////goods  



#30 phukortsin

phukortsin
  • Пользователь
  • 211 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 14.06.2018 - 09:43

смотрите в админке у вас goods если это бренд то у этого бренда в url стоит адрес ///////goods  

 

А некоторые говорят, экстрасенсов на форуме нет...

 

Вопрос-то совсем в другом. И на демо работают, например, адреса

http://demo.simplacm...dyson-dc23-pink

http://demo.simplacm...esosy/////dyson

 

"как убрать слэши" - зависит от того, что под этим подразумеваете, как минимум в двух смыслах можно понимать...

Сделать редирект на правильный адрес, можно, например, через регулярные выражения в .htaccess.



#31 shooroop

shooroop
  • Фрилансер
  • 685 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Antarktida

Опубликовано 14.06.2018 - 10:07

А некоторые говорят, экстрасенсов на форуме нет...

 

Вопрос-то совсем в другом. И на демо работают, например, адреса

http://demo.simplacm...dyson-dc23-pink

http://demo.simplacm...esosy/////dyson

 

"как убрать слэши" - зависит от того, что под этим подразумеваете, как минимум в двух смыслах можно понимать...

Сделать редирект на правильный адрес, можно, например, через регулярные выражения в .htaccess.

 

 

 

прикольно можно сколько угодно слешей ставить в адресе

 

http://demo.simplacm...dyson-dc23-pink



up



http://demo.simplacms.ru/products//////////////////////////////////////////////////////////////////////////////////////////////////////////////pylesos-dyson-dc23-pink






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

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

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