.htaccess изменить адреса страниц

hkdkest
На сайте с 11.11.2009
Offline
126
1300

Здравствуйте. у меня на сайте физически адреса страниц:

site.ru/_page_id=3.html

а нужно что бы открывались при запросе в браузере:

site.ru/?page_id=3

т.е. _ заменить на ? и убрать .html через .htaccess, подскажите как сделать буду очень благодарен :)

Покупка сайтов, BL в Webmoney > 500 Аттестат продавца. Продажа рекламы на более чем 400 сайтах.
kysok sabaki
На сайте с 27.02.2008
Offline
200
#1

Как-то сталкивался с аналогичной задачей. Решил программист не через .htaccess .

Оставлю здесь решение :


КОДЫ ДЛЯ СОХРАНЕНИЯ URL С ПАРАМЕТРАМИ ДЛЯ САЙТОВ НА ФАЙЛАХ
код вставляется в файл index.php
Имеем файл @id=1 , в строке браузера видим ?id=1

Например, ? заменён на @ в адресе типа @id=1, но нужно получить url вида ?id=1


<?
$arParam = array(
'id' => '@id',
)

foreach($arParam as $param => $fname){
if(isset($_REQUEST[$param])&&file_exists($fname."=".$_REQUEST[$param])){
include($fname."=".$_REQUEST[$param]);
exit();
}
}
?>

p.s. что-то код местами ***зазвездило

p.s.s. тогда вот для скачивания https://yadi.sk/d/cbXuQYPKetox2

I
На сайте с 23.02.2015
Offline
45
i4e
#2

Нетривиальная задача, минут 10 пришлось побиться головой об стену mod_rewrite 🤪

RewriteEngine On

RewriteBase /
RewriteCond %{QUERY_STRING} ^page_id=([0-9]+)$
RewriteRule ^.* /_page_id=%1\.html? [L]
SeVlad
На сайте с 03.11.2008
Offline
1609
#3
kysok sabaki:
что-то код местами ***зазвездило

Используй [code][/code] что бы такого не было.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
hkdkest
На сайте с 11.11.2009
Offline
126
#4
i4e:
Нетривиальная задача, минут 10 пришлось побиться головой об стену mod_rewrite 🤪

RewriteEngine On

RewriteBase /
RewriteCond %{QUERY_STRING} ^page_id=([0-9]+)$
RewriteRule ^.* /_page_id=%1\.html? [L]

Не работает . например при любом запросе /?page_id=49 отображается главная страница а должна _page_id=49.html

J
На сайте с 20.02.2014
Offline
120
jkm
#5
hkdkest:
Не работает . например при любом запросе /?page_id=49 отображается главная страница а должна _page_id=49.html

А если немного поправить удалив начальный слеш и знак вопроса после html


RewriteCond %{QUERY_STRING} ^page_id=([0-9]+)$
RewriteRule ^ _page_id=%1.html [L]

Или использовать %{THE_REQUEST}


RewriteCond %{THE_REQUEST} ^[A-Z]{3,7}\ /\?(page_id=[0-9]+)\ HTTP
RewriteRule ^ _%1.html [L]
hkdkest
На сайте с 11.11.2009
Offline
126
#6
jkm:
А если немного поправить удалив начальный слеш и знак вопроса после html

RewriteCond %{QUERY_STRING} ^page_id=([0-9]+)$
RewriteRule ^ _page_id=%1.html [L]


Или использовать %{THE_REQUEST}

RewriteCond %{THE_REQUEST} ^[A-Z]{3,7}\ /\?(page_id=[0-9]+)\ HTTP
RewriteRule ^ _%1.html [L]

Спасибо, вот этот вариант работает как надо:

RewriteCond %{QUERY_STRING} ^page_id=([0-9]+)$

RewriteRule ^ _page_id=%1.html [L]

F
На сайте с 15.03.2014
Offline
16
#7

господа, буду признателен, если сможете посмотреть соседнюю тему...

/ru/forum/887132

тоже мучаюсь с htaccess - ом ((

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий