|
|
|
| Добрый день. На сайте есть ссылка такого типа
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 в 21:32)
| | Из htaccess все удалил кроме
RewriteEngine On
RewriteRule ^bols([0-9]+)\.hi$ index.php?id=$1
|
и все равно не работает. Что на локалке, что на хостинге. Поскажите в чем проблема(( | |
|
|
|
|
|
|
|
для: 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
(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]
|
Но не хочет разделять их по отдельности(кто выше, того и тапки) Что можно сделать? | |
|
|
|
|
|
|
|
для: 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) и передает запрос на обработку в конечный урл. При чем в браузере стартовый урл может остаться как и было в начале - это внутренний переход называется и используется как правило в ЧПУ, либо измениться на конечный - внешний переход, как правило используется при переездах либо смене структуры сайта для обратной совместимости и сведения потери пользователей к минимуму.
Так что вам нужно? Каков стартовый УРЛ, каков конечный и какой тип перехода? | |
|
|
|
|
|
|
|
для: 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... | |
|
|
|
|