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

Форум Apache

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

 

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

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

тема: RewriteRule и регулярные выражения
 
 автор: Xolod   (30.09.2011 в 15:15)   письмо автору
 
 

Помогите разобраться, у меня проблема с регулярными выражениями.

.htaccess содержит это

RewriteEngine on 
RewriteRule ^/?user page.php [L] 
RewriteRule ^user/([^/\.]+)/?$ user?id=$1 [L]


обращаюсь по ссылке http://www.sitename.ru/user/47/

в файле page.php не пропускает условие


<?php
if (isset($_GET['id'])) {
echo 
$_GET['id'];
} else{
 exit(
"Вы зашли на страницу без параметра!");
}
?>

  Ответить  
 
 автор: cheops   (30.09.2011 в 15:33)   письмо автору
 
   для: Xolod   (30.09.2011 в 15:15)
 

Отлаживаете на сервере или локально? Есть возможность включить журналирование mod_rewrite?

  Ответить  
 
 автор: XoLoD   (30.09.2011 в 15:43)   письмо автору
 
   для: cheops   (30.09.2011 в 15:33)
 

отлаживание на сервере. Включить журналирование хостер не позволяет.

  Ответить  
 
 автор: cheops   (30.09.2011 в 15:47)   письмо автору
 
   для: Xolod   (30.09.2011 в 15:15)
 

>в файле page.php не пропускает условие
А можно вот это подробнее расшифровать. Вы обращаетесь к http://www.sitename.ru/user/47/ у вас срабатывает следующее правило
RewriteRule ^/?user page.php [L]
вас перебрасывает на page.php, так как в правиле нет передачи параметра, то page.php вызывается без ?id=47. page.php выдает "Вы зашли на страницу без параметра!".
1) Это верно, или в моих рассуждениях есть ошибка?
2) Как бы вам хотелось, чтобы система себя вела?

  Ответить  
 
 автор: XoLoD   (30.09.2011 в 16:14)   письмо автору
 
   для: cheops   (30.09.2011 в 15:47)
 

Всё понял свою ошибку. А ведь 2 часа смотрел в эту строчку и не видел)

исправил на
RewriteRule ^user/([^/\.]+)/?$ /page.php?id=$1 [L] 

Но проблема теперь в другом.
допустим в .htaccess
RewriteRule ^user/([^/\.]+)/?$ test.php?id=$1 [L]


test.php содержит:

<?php
if (isset($_GET['id'])) {
echo 
$_GET['id'];

echo 
'<a href="images/Enderman.png">картинка</a>';

} else{
 exit(
"Вы зашли на страницу без параметра!");
}
?>


обращаюсь к скрипту по ссылке http://sitename.ru/user/47/
он пропускает к содержимому
в браузере ссылка на картинку выглядит так
http://www.sitename.ru/user/47/images/Enderman.png


А должна
http://www.sitename.ru/images/Enderman.png

  Ответить  
 
 автор: cheops   (30.09.2011 в 17:30)   письмо автору
 
   для: XoLoD   (30.09.2011 в 16:14)
 

С mod_rewrite всегда так, придется использовать абсолютные, а не относительные пути. Т.е. вместо
<?php
  
echo '<a href="images/Enderman.png">картинка</a>';
?>
писать
<?php
  
echo '<a href="/images/Enderman.png">картинка</a>';
?>

  Ответить  
 
 автор: XoLoD   (03.10.2011 в 09:43)   письмо автору
 
   для: cheops   (30.09.2011 в 17:30)
 

Спасибо. Век живи, век учись.

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

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