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

Форум Apache

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

 

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

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

тема: mod_rewrite
 
 автор: vasvas   (29.04.2008 в 12:09)   письмо автору
 
 

Здравствуйте, подскажите, пожалуйста.
Имеется тестовый простенький скрипт
<?
echo "<a href=index.php?name=pp>1</a><br>";
echo "<a href=index.php?name=gg>2</a>";
?>

2 ссылки.
Что нужно вписать в файл htaccess, что бы при нажатии по ссылкам, вид в был такое
http://домен/1
http://домен/2
mod_rewrite установлен

Спасибо за помощь

   
 
 автор: dima2207   (01.05.2008 в 20:14)   письмо автору
 
   для: vasvas   (29.04.2008 в 12:09)
 

Может наоборот ? А иначе какой смысл использовать мод_реврайт если у вас идет обращение к индекс.пхп .

<?
echo "<a href=ваш_домен/1>1</a><br>";
echo 
"<a href=ваш_домен/2>2</a>";
?>

   
 
 автор: vasvas   (02.05.2008 в 15:16)   письмо автору
 
   для: dima2207   (01.05.2008 в 20:14)
 

Здравствуйте.
Извините, пожалуйста, но я Вас не совсем понял dima2207
Не затруднит ли Вас поподробнее описать, что Вы имеете ввиду?
спасибо.

   
 
 автор: vasvas   (02.05.2008 в 17:08)   письмо автору
 
   для: dima2207   (01.05.2008 в 20:14)
 

Я имел ввиду следующее,
При нажатии на ссыку передаётся перменная, и происходит какйо то действии, но я бы хотел что бы фактически в браузере было не htttp://домен?name=1
а домен домен/1

   
 
 автор: Atheist   (02.05.2008 в 17:24)   письмо автору
 
   для: vasvas   (02.05.2008 в 17:08)
 

Добавь в .htaccess

RewriteEngine On
RewriteRule ^[0-9]+$ index.php?name=$0


Далее тебе нужно выводить ссылки не index.php?name=1024, а сразу http://example.com/1024 или относительные URI типа /1024 или 1024.

В противном случае придется делать просто перенаправление, так как есть ты перенаправляешь пользователя на адрес http://example.com/page.html, но такой адрес и будет в адресной строке. Его ты изменить не сможешь, тем более с помощью mod_rewrite - модулем для сервера.

   
 
 автор: vasvas   (02.05.2008 в 19:33)   письмо автору
 
   для: Atheist   (02.05.2008 в 17:24)
 

Спасибо за ответ, но я не понял, почему мне что-то нужно перенаправлять, почитал чуть-чуть про мод реврайт, я понял следующее, что он лишь изменяет строчку в браузере
напрмиер если не использовать мод реврайт, то он отображает следующее в адресной строке
http://домен/index.php?name=1
Если использовать, то ту же самую строчку он просто покажет как
http://домен/1

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

   
 
 автор: Atheist   (02.05.2008 в 21:47)   письмо автору
 
   для: vasvas   (02.05.2008 в 19:33)
 

> что он лишь изменяет строчку в браузере
Заблуждаешься.

> Спасибо за ответ, но я не понял, почему мне что-то нужно перенаправлять
Если ты хочешь оставить ссылки такие же, вроде <a href="index.php?name=1024">Click</a>, то чтобы в адресной строке отобразилось http://example.com/1024, нужно перенаправить с http://example.com/index.php?name=1024 на http://example.com/1024. В данном случае другого выхода нет.

> Хотяь весь функционал останется прежним, то есть изменится просто строчка адресная
Нет. Все ссылки надо менять.

Никто не способен заставить клиента отображать в адресной строке то, что он хочет (не будем рассматривать изощренные способы вроде подброса вируса). Клиент вообще ничего не должен знать о каких-то там index.php на удаленном сервере. Ему должны дать красивую ссылку вроде http://example.com/1024, он на неё переходит, а mod_rewrite уже на сервере обрабатывает этот запрос.

   
 
 автор: vasvas   (02.05.2008 в 23:11)   письмо автору
 
   для: Atheist   (02.05.2008 в 21:47)
 

Спасибо большое за помощь Atheist
попробую написать тестовый скрипт.

   
 
 автор: vasvas   (03.05.2008 в 12:22)   письмо автору
 
   для: vasvas   (02.05.2008 в 23:11)
 

Извините, пожалуйста, можно ещё вопрос.
RewriteRule ^[0-9]+$ index.php?name=$0
почему здесь выставляется $0, а не $1
а вот здесь уже нужно высталвять так
RewriteRule ^([0-9]+)/([0-9]+)$ index.php?l=$1&name=$2
так не будет работать
RewriteRule ^([0-9]+)/([0-9]+)$ index.php?l=$0&name=$1

   
 
 автор: Atheist   (03.05.2008 в 12:49)   письмо автору
 
   для: vasvas   (03.05.2008 в 12:22)
 

$0 - часть строки, соответствующая вхождению всего шаблона.
$1 - часть, строки, соответствующая первой подмаске, $2 - второй и т.д.

> ^([0-9]+)/([0-9]+)$
Под такой паттерн (шаблон) подходит, например "512/1024" и, соотвественно, $1 будет содержать "512", а $2 - "1024".
$0 же будет содержать всю строку "512/1024".

   
Rambler's Top100
вверх

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