Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: регулярка для ЧПУ динамических страниц в .htaccess
 
 автор: ladan   (14.02.2012 в 21:32)   письмо автору
 
 

Добрый день. На сайте есть ссылка такого типа
http://sait.ru/index.php?id=2


Нужно задать условие, что если id=2, то переделать ссылку в http://sait.ru/about.html

Подскажите плз как сделать. Регулярные выражение более менее знаю в php, а в htaccess немного подругому все...

Пока что нарыл в нете такое


RewriteEngine On
RewriteCond — условие при котором будет срабатывать RewriteRule.
RewriteRule ^about/(.*).html$ index.php?id=$1 //что-то  типа так :) хотя и без условия ничего не работает

  Ответить  
 
 автор: ladan   (14.02.2012 в 22:43)   письмо автору
 
   для: ladan   (14.02.2012 в 21:32)
 

Из htaccess все удалил кроме
RewriteEngine On
RewriteRule ^bols([0-9]+)\.hi$ index.php?id=$1


и все равно не работает. Что на локалке, что на хостинге. Поскажите в чем проблема((

  Ответить  
 
 автор: ladan   (14.02.2012 в 23:59)   письмо автору
 
   для: ladan   (14.02.2012 в 22:43)
 

сделал задуманное так...

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]

$parent = array("/[\'\"]/","/\/(.+)\??/");
$replace = array("","\\1");
$sef = preg_replace($parent,$replace,$_SERVER['REQUEST_URI']);

$link = mysql_query("SELECT * FROM SEF WHERE SEF='$url'");
$link_row = mysql_fetch_array($link);
$link_row['real_url'] = preg_replace("/.+([0-9]+)/","\\1",$link_row['real_url']);


$page = mysql_query("SELECT * FROM page WHERE id='".$link_row['real_url']."'");
$page_row = mysql_fetch_array($page);


пришлось таблицу в бд создавать, заносить в нее реальный адресс и саму чпу ссылку. В принципе все нормально, можно так на каждую страницу свой адрес писать и потом прегреплйсом доставать нужные переменные. Вопросов больше нет :)

  Ответить  
 
 автор: ladan   (15.02.2012 в 00:54)   письмо автору
 
   для: ladan   (14.02.2012 в 23:59)
 

блин, не то получилось. В пределах одного файла можно так делать. У меня файлов 3 с динамическим страницами. Прописал в htaccess две строчки для каждого файла

RewriteBase / 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php [L,QSA]

RewriteBase / 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ view_cat.php [L,QSA]


Но не хочет разделять их по отдельности(кто выше, того и тапки) Что можно сделать?

  Ответить  
 
 автор: Sfinks   (15.02.2012 в 15:36)   письмо автору
 
   для: ladan   (14.02.2012 в 21:32)
 

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

MR (мод_реврайт) делает следующее: преобразует начальный урл (то что пишется в строке браузера и, как правило, не существует на самом деле, например http://site.ru/blog/pupkin/vasya/about.html) в конечный (как правило обработчик адрес которого пользователю в браузере не показывается, например: http://site.ru/blogs.php?familiya=pupkin&name=vasya&page=about) и передает запрос на обработку в конечный урл. При чем в браузере стартовый урл может остаться как и было в начале - это внутренний переход называется и используется как правило в ЧПУ, либо измениться на конечный - внешний переход, как правило используется при переездах либо смене структуры сайта для обратной совместимости и сведения потери пользователей к минимуму.

Так что вам нужно? Каков стартовый УРЛ, каков конечный и какой тип перехода?

  Ответить  
 
 автор: ladan   (15.02.2012 в 16:05)   письмо автору
 
   для: Sfinks   (15.02.2012 в 15:36)
 

с этим разоблася :) Нужно было вот это
преобразует начальный урл (то что пишется в строке браузера и, как правило, не существует на самом деле, например http://site.ru/blog/pupkin/vasya/about.html) в конечный (как правило обработчик адрес которого пользователю в браузере не показывается, например: http://site.ru/blogs.php?familiya=pupkin&name=vasya&page=about) и передает запрос на обработку в конечный урл.

Есть
RewriteEngine On
RewriteRule ^o-нас$ index.php [L,QSA]
RewriteRule ^reklama$ index.php [L,QSA]
RewriteRule ^anapa-oteli$ view_cat.php [L,QSA]


с латиницей нормально работает, а вот русские символы во время перехода изменяет на примерно вот это "/%D0%BE-%D0%BD%D0%B0%D1%81?" и выдает 404 ошибку. Файлы в utf-8...

  Ответить  
 
 автор: Sfinks   (15.02.2012 в 17:28)   письмо автору
 
   для: ladan   (15.02.2012 в 16:05)
 

Ответ в теме при русском ЧПУ выводится 404 ошибка

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования