Мой любимый блог

Моя работа над WordPress, Joomla, LiveStreet, SEO. Мои разработки и многое другое о жизни …

Ноя
04

Как вырезать в URL последний / (слэш) и вернуть с 301 редиректом

Рубрика: Заработок, работа. Автор job

На днях постоянные заказчики дали мелкую доработку на 301 редирект. Первое что приходит на ум это .. И правильно, пусть Apache сам справляется. Задача стояла в следующем: Всем ссылкам с окончанием / (слэш) вернуть 301 и перенаправить на страницу без него.

Я в Apache и администрировании веб-серваков не силен, но логику в обработке .htaccess понимаю, но скажу честно, потратил на решение задачи 3 часа. Пробовал два варианта с RedirectPermanent и RewriteRule. С прямым указанием старой и новой ссылки все работает, но извините у меня их несколько сотен, каждую прописывать естественно не будешь. Начал крутить с Метасимволами и Модификаторами, т.е. вырезать все что между символами / и формировать новую ссылку. Не работает. Начал гуглить и яндексить. Конкретных примеров нет. В общем крутился, крутился на своем офисном кресле и плюнул. Сел за редирект с помощью , то что мне ближе по душе.

И так, вот код... Комментарии будут ниже.

1
2
3
4
5
6
7
8
9
10
$uri = $_SERVER[REQUEST_URI];
$host = $_SERVER[HTTP_HOST];
if ($uri!='/'){
	$templ = substr($uri,strlen($uri)-1,1);
	if ($templ=='/'){
		$temp_uri = substr($uri,0,strlen($uri)-1);
		header ('HTTP/1.1 301 Moved Permanently');
		header("Location: http://".$host.$temp_uri);
	}
}

1. Вырезаем имя хоста
2. Вырезаем урл после хоста
3. Делаем проверку. Т.к. хост вырезается до слеша, то урл на главной будет состоять из одного символа /, а обработка на главной нам не нужна. В данном случае мы не хотим выполнять редирект если урл равен /
4. Вырезаем последний символ урла.
5. Делаем проверку. Если последний символ равен / то переходим к редиректу.
6. Для удобства объявил переменную в которой вырезаем последний символ из урла.
7. Объявляем 301.
8. Делаем редирект.

Все это вставляем в самый верх шаблона и вуаля. На всех ссылках с окончанием / будет работать редирект.

На это у меня ушло 10 минут. И то пока вспоминал операторы работы со строками )). В общем спасибо маэстро, то бишь мне, пользуйтесь...

Пару слов, что еще происходит со мной в сфере блогинга между работой. 1) В плотную занялся системой dubli, о которой писал в посте Яндекс метрика растет в моих глазах! 2) Конкурс BestMasterиZация в котором я так же типа участвую, жжет. То есть сижу в пассиве. Все что я сделал для достижения цели — на своих сайтах повесил два сквозняка с PR2 и все )). Сижу в ТОП100, перед чем и ставилась задача. Надеюсь организаторы не обманут и выплатят 500 рублей )).

Popularity: 77% [?]

Google Bookmarks Linkstore Myscoop Ru-marks Webmarks Ruspace Kli.kz Web-zakladka Reddit delicious Ma.gnolia Technorati Yahoo My Web News2.ru БобрДобр.ru Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong
  1. kane Пишет:

    Я понимаю, что это требование заказчика, но всё же — зачем убирать слеш ? Чем он мешает?

  2. job Пишет:

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

  3. kane Пишет:

    Это понятно, что редирект для не потери линков, пуза и т.д.

    Не понятен мотив заказчика — чем без слеша лучше то. Визуально — одинаково почти.

  4. job Пишет:

    лично мне было пофиг. прихоть заказчика. Но как я понял, только ради склейки PR

  5. Antonio Пишет:

    Хороший пример, спасибо

Оставить комментарий