Чпу с помощью htacces

Статус
Закрыто для дальнейших ответов.

webwork

Well-Known Member
Регистрация
19.12.2011
Сообщения
97
Добрый день всем кто на форуме. Долго искал ответ на один вопрос но толком ничего не нашел.

Вопрос следующий.
как правильно сделать чтото вроде чпу с помощью .htaccess ?
я пробовал следующим образом:
Код:
склейка домена с www и без
RewriteEngine on
RewriteCond %{HTTP_HOST} ^lbud.com.ua [NC]
RewriteRule ^(.*)$ http://www.lbud.com.ua/$1 [L,R=301]
строка замены стандартного url на нормальный

RewriteRule ^suhie-stroitelnye-smesi$ index.php?route=product/category&path=60 [L]
RewriteRule ^shtukaturki$ index.php?route=product/category&path=59_65 [L]
RewriteRule ^teploizolyacionnie-materialy$ index.php?route=product/category&path=61 [L]
RewriteRule ^utepliteli$ index.php?route=product/category&path=61_81 [L]
В .htaccess есть еще последняя строка
Код:
RewriteRule ^uteplenie-fasadov.php$ index.php?route=product/product&path=61_82&product_id=144 [R=permanent,L]
вот ее почемуто не видит гугл не могу понять почему упорно отказывается индексировать?
вот файл для обработки
Код:
<?php
$sru = strtolower($_SERVER['REQUEST_URI']);
$redir = array( '/index.php?route=product/category&path=60'=>'/suhie-stroitelnye-smesi',
	 '/index.php?route=product/category&path=59_65'=>'/shtukaturki',
					 '/index.php?route=product/category&path=61'=>'/teploizolyacionnie-materialy',
	  '/index.php?route=product/category&path=61_81'=>'/utepliteli',
	  '/index.php?route=product/product&path=61_82&product_id=144'=>'/uteplenie-fasadov.php'
	 );
if( isset( $redir[$sru] )){
  header( "HTTP/1.1 301 Moved Permanently" );
  header( "Location: ".$redir[$sru] );
  exit();
}
if( false !== $old_uri = array_search( $sru, $redir ))
  $_SERVER['REQUEST_URI'] = $old_uri;
?>
И еще один вопрос. Нужно ли закрывать в роботсе старые урлы после выполнения чпу как у меня?
старый это типа
Код:
/index.php?route=product/product&path=61_82&product_id=144
Заранее спасибо всем за вразумительные ответы.
Удачи вам всем во всех ваших проэктах (пусть они будут прибыльными)
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
И еще один вопрос. Нужно ли закрывать в роботсе старые урлы после выполнения чпу как у меня?
старые надо редиректить на новые, отдавая сообщение 301

Код:
RewriteRule ^uteplenie-fasadov[color=#ff0000][b].[/b][/color]php$ index.php?route=product/product&path=61_82&product_id=144 [R=permanent,L]
в регулярных выражениях точки надо экранировать, т.е. добавлять перед ними \ получится ^uteplenie-fasadov\.php$
 

webwork

Well-Known Member
Регистрация
19.12.2011
Сообщения
97
И еще один вопрос. Нужно ли закрывать в роботсе старые урлы после выполнения чпу как у меня?
старые надо редиректить на новые, отдавая сообщение 301

Код:
RewriteRule ^uteplenie-fasadov[color=#ff0000][b].[/b][/color]php$ index.php?route=product/product&path=61_82&product_id=144 [R=permanent,L]
в регулярных выражениях точки надо экранировать, т.е. добавлять перед ними \ получится ^uteplenie-fasadov\.php$
спасибо вам за совет. Попробовал сделать как вы посоветовали. убрал из файла обработки строку
Код:
'/index.php?route=product/product&path=61_82&product_id=144'=>'/uteplenie-fasadov.php'
и прописал в .htaccess правило которое вы выложили. ЧПУ не сработал , выдает старый url.
если же омтавить выше указанную запись в обработчике то
The requested URL /uteplenie-fasadov.php was not found on this server.

в общем что то не то буду дальше думать и искать
но все равно спасибо за то что не прошли стороной и дали совет
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 138
Только на днях мучился со сложным урлом.
Не стоит всю строку забивать, выбери один гет запрос

У меня есть такой адрес
http://g63.ru/index.php?show_news=1282492783.74502065549760159763031381127184&news_section=204%20238%20233%2032%20225%20235%20238%20227

Код:
RewriteCond %{QUERY_STRING} show_news=1282492783.74502065549760159763031381127184
RewriteRule index\.php http://blog.g63.ru/?p=1772 [R=301,L]
Т.е. выбираем конкретный GET, который отвечает за эту страницу и редиректим по нему.

Вот картинка для нубов помогла сильно
 

webwork

Well-Known Member
Регистрация
19.12.2011
Сообщения
97
ооо спасибо)) помоему то что доктор прописал)))
 

webwork

Well-Known Member
Регистрация
19.12.2011
Сообщения
97
Только на днях мучился со сложным урлом.
Не стоит всю строку забивать, выбери один гет запрос

У меня есть такой адрес
http://g63.ru/index....225 235 238 227

Код:
RewriteCond %{QUERY_STRING} show_news=1282492783.74502065549760159763031381127184
RewriteRule index\.php http://blog.g63.ru/?p=1772 [R=301,L]
Т.е. выбираем конкретный GET, который отвечает за эту страницу и редиректим по нему.

Вот картинка для нубов помогла сильно
Помоему я идиот
смотрите вот целый адресс: http://www.lbud.com.ua/index.php?route=product/product&path=61_82&product_id=144
а вот то что я сделал по картинке
Код:
RewriteCond %{QUERY_STRING} product&path=61_82&product_id=144
RewriteRule index.php?route=product/ http://www\.lbud.com.ua/uteplenie-fasadov.php [R=301,L]
теперь нет никаких ошибок но адресс выводится в первоначальной форме
скажите где я торможу?
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 138
Не стоит всю строку забивать, выбери один гет запрос
Т.е. выбираем конкретный GET, который отвечает за эту страницу и редиректим по нему.
Код:
RewriteCond %{QUERY_STRING} product_id=144
RewriteRule index\.php http://www.lbud.com.ua/uteplenie-fasadov.php [R=301,L]
Раз ты занялся этой сеохней, то рекомендую еще избавиться от WWW
Код:
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 138
Вчера была неприятность. Сегодня ища ответ на другой вопрос - нашел как исправить вчерашнюю неприятность
Код:
RewriteCond %{QUERY_STRING} id=345
RewriteRule index\.php http://example.com/cego-to-tam.html [R=301,L]
В таком виде передаются и где запрос
т.е. предположим у нас начальная стока была
Код:
http://example.com/index.php?cat=12&id=345
то выше озвученные правила создадут страницу
Код:
http://example.com/cego-to-tam.html?cat=12&id=345
Чтобы этого не было, надо всего лишь поставить в конце знак вопроса
Код:
RewriteCond %{QUERY_STRING} id=345
RewriteRule index\.php http://example.com/cego-to-tam.html? [R=301,L]
Сейчас ищу ответ, как избавится от другой проблемы:
предположим есть строка
Код:
http://example.com/cego-to-tam.html?cat=12&id=180
и создали правило, как выше, то оно будет обрабатывать все строки, которые оканчиваются на 180(.*), т.е. например
Код:
http://example.com/cego-to-tam.html?cat=12&id=1803
http://example.com/cego-to-tam.html?cat=12&id=180332432
http://example.com/cego-to-tam.html?cat=12&id=180asd
Ответ таков
Код:
RewriteCond %{QUERY_STRING} id=345($|&)
RewriteRule index\.php http://example.com/cego-to-tam.html? [R=301,L]
Таким образом получилось с помощью регулярки, что после цифры должна идти
или $ - конец строки
или & - новый GET параметр

PS У меня дежавю )))
 

webwork

Well-Known Member
Регистрация
19.12.2011
Сообщения
97
Вчера была неприятность. Сегодня ища ответ на другой вопрос - нашел как исправить вчерашнюю неприятность
Код:
RewriteCond %{QUERY_STRING} id=345
RewriteRule index\.php http://example.com/cego-to-tam.html [R=301,L]
В таком виде передаются и где запрос
т.е. предположим у нас начальная стока была
Код:
http://example.com/index.php?cat=12&id=345
то выше озвученные правила создадут страницу
Код:
http://example.com/cego-to-tam.html?cat=12&id=345
Чтобы этого не было, надо всего лишь поставить в конце знак вопроса
Код:
RewriteCond %{QUERY_STRING} id=345
RewriteRule index\.php http://example.com/cego-to-tam.html? [R=301,L]
Сейчас ищу ответ, как избавится от другой проблемы:
предположим есть строка
Код:
http://example.com/cego-to-tam.html?cat=12&id=180
и создали правило, как выше, то оно будет обрабатывать все строки, которые оканчиваются на 180(.*), т.е. например
Код:
http://example.com/cego-to-tam.html?cat=12&id=1803
http://example.com/cego-to-tam.html?cat=12&id=180332432
http://example.com/cego-to-tam.html?cat=12&id=180asd
Ответ таков
Код:
RewriteCond %{QUERY_STRING} id=345($|&)
RewriteRule index\.php http://example.com/cego-to-tam.html? [R=301,L]
Таким образом получилось с помощью регулярки, что после цифры должна идти
или $ - конец строки
или & - новый GET параметр

PS У меня дежавю )))
огромное спасибо за ценную информацию буду пробовать)))
о результатах отпишусь (если это комуто интересно)
 
Статус
Закрыто для дальнейших ответов.
Верх Низ