Прошу помощи с rewriterule

tend

Новичок
Прошу помощи с rewriterule

Всем привет!

Что-то не получается у меня сделать следующее: надо при загрузке страницы info.php?id=567 загружать страницу info567.htm.
Вот это что-то не работает:

RewriteEngine On
RewriteBase /
RewriteRule ^info\.php\?id=([0-9]+)$ info$1.htm

В чем ошибка и как сделать то, что мне нужно?
 

Фанат

oncle terrible
Команда форума
а не наоборот?
какой смысл в такой операции?
 

Фанат

oncle terrible
Команда форума
Граждане посетители данного форума.
Имейте, пожалуйста в виду, что если вы приходите с нестандартной и бессмысленной, на первый взгляд, задачей, то надо потрудиться дать ей осмысленное пояснение.
И постарайтесь, пожалуйста, чтобы не приходилось повторять эту просьбу дважды.

Спасибо.
 

tend

Новичок
Хочу изменить на сайте все php-ссылки на htm, чтобы если заходили по старым php-ссылкам (после изменения), то происходил бы редирект на htm-ссылки.
 

Фанат

oncle terrible
Команда форума
о боже.
почему у тебя в вопросе написано "загружать", а не "редирект"?
 

tend

Новичок
да, верно, неправильно выразился...
я хочу, чтобы происходил редирект...
так как это сделать?
 

Фанат

oncle terrible
Команда форума
тогда смотри параметр, который идет после правила в квадратных скобках, который отвечает за нужное тебе ПЕРЕНАПРАВЛЕНИЕ.

кстати, попробуй полный урл указать

-~{}~ 06.09.07 21:05:

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

tend

Новичок
*****
правильно ли я понял, что в начале php-скрипта ты предлагаешь прописать что-то типа:
header("Location: http://www.site.ru/info567.htm");
exit();
А как же тогда быть с тем, что при загрузке info567.htm начнет загружаться (через mod_rewrite) снова этот php-скрипт, который снова заредиректит и так будет по кругу?
 

Фанат

oncle terrible
Команда форума
ну наверное надо не тупо на каждый запрос делать редирект, а?
 

tend

Новичок
я просто пока не знаю каким образом сделать правильно :)
 

Фанат

oncle terrible
Команда форума
ну наверное - проверить, по какому запросу пришел пользователь.
посмотреть запрос в phpinfo() ты сможешь, я надеюсь?

-~{}~ 06.09.07 23:19:

впрочем - при чем здесь пхпинфо.

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

там все проще пареной репы
 

tend

Новичок
думаю...

-~{}~ 07.09.07 00:05:

придумал... напомню, что мне надо было при загрузке страниц info.php?id=*** редиректить на info***.htm
вот что получилось:

if ( strpos($REQUEST_URI,"info.php") !== false && isset($_GET["id"]) )
{
$id = $_GET["id"];
$url = "http://www.site.ru/info".$id.".htm";
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".$url);
exit();
}

два вопроса:
1. похоже ли на правду и можно ли сделать еще проще?
2. когда после редиректа будет грузиться info***.htm, снова пойдет обращение к скрипту info.php?id=*** - не получится ли зацикливание?

-~{}~ 07.09.07 01:07:

не было возможности проверить второй вопрос, но уже проверил - все ок, а вот с первым вопросом хотелось бы разобраться, если есть более простой вариант
*****, большое спасибо за то, что заставил поработать мои мозги! Аж самому понравилось :)
 

Фанат

oncle terrible
Команда форума
лично я бы проверял только isset($_GET["id"])
не вижу нужды в других проверках, но, возможно, у тебя есть причины их делать

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

tend

Новичок
сразу после твоих слов и я так подумал, что нужно только проверять по isset($_GET["id"])
но, проверив, понял: если проверять только по isset($_GET["id"]), идет переадресация на info***.htm, а потом через mod_rewrite снова идет обращение к скрипту info.php?id=*** и идет зацикливание (так как есть переменная id, снова происходит редирект и так по кругу)
оказывается, что я еще и правильно сделал, проверяя $REQUEST_URI :)
 
Сверху