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

Форум Apache

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

 

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

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

тема: ЧПУ: превратить page.php?note=1 в 1.html
 
 автор: rux   (29.03.2011 в 11:34)   письмо автору
 
 

Здравствуйте!

Подскажите, как можно сделать, чтобы вместо таких ссылок:

page.php?note=1
page.php?note=2
page.php?note=3

и т.д.

Получились такие

1.html
2.html
3.html

  Ответить  
 
 автор: cheops   (29.03.2011 в 11:43)   письмо автору
 
   для: rux   (29.03.2011 в 11:34)
 

Можно поступить следующим образом
RewriteEngine on
RewriteBase /
RewriteRule ^([\d+]).html /page.php?note=$1 [L]

  Ответить  
 
 автор: rux   (29.03.2011 в 11:49)   письмо автору
 
   для: cheops   (29.03.2011 в 11:43)
 

Спасибо.
Эт в .htaccess нужно вписать, да?

  Ответить  
 
 автор: cheops   (29.03.2011 в 11:50)   письмо автору
 
   для: rux   (29.03.2011 в 11:49)
 

Совершенно верно.

  Ответить  
 
 автор: rux   (29.03.2011 в 11:57)   письмо автору
 
   для: cheops   (29.03.2011 в 11:50)
 

Понятно. Спасибо.

  Ответить  
 
 автор: rux   (29.03.2011 в 12:00)   письмо автору
 
   для: cheops   (29.03.2011 в 11:50)
 

Ой! Похоже не тот .htaccess кручу)))

  Ответить  
 
 автор: cheops   (29.03.2011 в 12:09)   письмо автору
 
   для: rux   (29.03.2011 в 12:00)
 

Вы точный адрес от начала сайта укажите, так как приведенное выше правило работает для корня сайта.

  Ответить  
 
 автор: rux   (29.03.2011 в 12:22)   письмо автору
 
   для: cheops   (29.03.2011 в 11:50)
 

А вот еще хотел уточнить...
Если у меня Денвер - .htaccess в каком месте создать? Или его не нужно нигде создавать?)

  Ответить  
 
 автор: cheops   (29.03.2011 в 12:31)   письмо автору
 
   для: rux   (29.03.2011 в 12:22)
 

.htaccess - это конфигурационный файл, который управляет поведением Web-сервера Apache на уровне папки. Т.е. создавать его нужно в той папке, к которой вы хотите применить правила .htaccess.

  Ответить  
 
 автор: rux   (29.03.2011 в 12:42)   письмо автору
 
   для: cheops   (29.03.2011 в 12:31)
 

Правильно ли я понимаю, что если у меня всё находится в Z:\home\localhost\www\site то в ней (в папке site) я его и создаю?

  Ответить  
 
 автор: cheops   (29.03.2011 в 13:31)   письмо автору
 
   для: rux   (29.03.2011 в 12:42)
 

Да.

  Ответить  
 
 автор: rux   (29.03.2011 в 13:53)   письмо автору
 
   для: cheops   (29.03.2011 в 13:31)
 

Понял, спасибо.
Вроде бы так и сделал, но пока не работает... В чем может быть причина?

P.S. Denwer перезапустил

  Ответить  
 
 автор: cheops   (29.03.2011 в 14:37)   письмо автору
 
   для: rux   (29.03.2011 в 13:53)
 

А в чем выражается не работа и что пишется в логах Apache?

  Ответить  
 
 автор: rux   (29.03.2011 в 14:46)   письмо автору
 
   для: cheops   (29.03.2011 в 14:37)
 

>А в чем выражается не работа...

Вид ссылки не изменился. (http://localhost/site/page.php?note=19)
А так всё работает

>... что пишется в логах Apache?
А это где глянуть?

  Ответить  
 
 автор: cheops   (29.03.2011 в 14:59)   письмо автору
 
   для: rux   (29.03.2011 в 14:46)
 

А он и не будет изменяться, следует сразу набирать конечную ссылку и везде её использовать. Если нужно, чтобы ссылка менялась - отслеживайте это в PHP-кода и осуществляйте переадресацию на ЧПУ-ссылку.

  Ответить  
 
 автор: rux   (29.03.2011 в 15:43)   письмо автору
 
   для: cheops   (29.03.2011 в 14:59)
 

>... следует сразу набирать конечную ссылку и везде её использовать...

Получается, что если мы набираем http://localhost/site/1.html то попадаем по адресу http://localhost/site/page.php?note=1 (если сработает код в .htaccess)

Правильно?

  Ответить  
 
 автор: cheops   (29.03.2011 в 15:53)   письмо автору
 
   для: rux   (29.03.2011 в 15:43)
 

Совершенно верно.

  Ответить  
 
 автор: rux   (29.03.2011 в 16:06)   письмо автору
 
   для: cheops   (29.03.2011 в 15:53)
 

Хм... Странно.... "Not Found" выдает.

  Ответить  
 
 автор: cheops   (29.03.2011 в 16:10)   письмо автору
 
   для: rux   (29.03.2011 в 16:06)
 

Для site нужно модифицировать правило
RewriteEngine on 
RewriteBase / 
RewriteRule ^site/([\d+]).html /site/page.php?note=$1 [L]

  Ответить  
 
 автор: rux   (29.03.2011 в 16:15)   письмо автору
 
   для: cheops   (29.03.2011 в 16:10)
 

Спасибо, сейчас попробую...

  Ответить  
 
 автор: rux   (29.03.2011 в 16:40)   письмо автору
 
   для: cheops   (29.03.2011 в 16:10)
 

К сожалению, вот такая надпись выдается:

"Подсказка Денвера

Вы ошиблись при наборе URL в браузере. Вероятнее всего, сервер пытается найти файл Z:/home/localhost/www/site/1.html, которого не существует. "


Кстати, у меня старенький Денвер... Может быть в этом дело? (настройки, какие-нибудь другие)

  Ответить  
 
 автор: cheops   (29.03.2011 в 16:47)   письмо автору
 
   для: rux   (29.03.2011 в 16:40)
 

Вполне может быть, я комплектацию денвера плохо знаю, возможно там и модуля mod_rewrite нет.

  Ответить  
 
 автор: rux   (29.03.2011 в 17:05)   письмо автору
 
   для: cheops   (29.03.2011 в 16:47)
 

Ясно, спасибо)
Попробую обновить может, что получится.

  Ответить  
 
 автор: cheops   (29.03.2011 в 17:19)   письмо автору
 
   для: rux   (29.03.2011 в 17:05)
 

Еще в httpd.conf загляните и посмотрите включен ли там mod_rewrite.

  Ответить  
 
 автор: rux   (29.03.2011 в 20:23)   письмо автору
 
   для: cheops   (29.03.2011 в 17:19)
 

Хорошо гляну, спасибо.

  Ответить  
 
 автор: rux   (29.03.2011 в 20:54)   письмо автору
 
   для: cheops   (29.03.2011 в 17:19)
 

Установил новый Денвер
Вот фрагмент из файла httpd.conf

LoadModule rewrite_module modules/mod_rewrite.so


Пока всё без изменений - 404
А Firewall не может быть причиной?.. Хотя я его отключал...

  Ответить  
 
 автор: cheops   (29.03.2011 в 21:55)   письмо автору
 
   для: rux   (29.03.2011 в 20:54)
 

Попробуйте следующий .htaccess
RewriteEngine on  
RewriteBase /  
RewriteRule ^([\d+]).html page.php?note=$1 [L]

  Ответить  
 
 автор: rux   (29.03.2011 в 22:55)   письмо автору
 
   для: cheops   (29.03.2011 в 21:55)
 

Спасибо.
Так тоже пробовал, пока не сработало.

  Ответить  
 
 автор: cheops   (29.03.2011 в 22:58)   письмо автору
 
   для: rux   (29.03.2011 в 22:55)
 

Хм... странно, у меня на локальной машине (Apache 2.2) работает (воспроизвел ситуацию с папками).

  Ответить  
 
 автор: rux   (29.03.2011 в 23:31)   письмо автору
 
   для: cheops   (29.03.2011 в 22:58)
 

Вот и я думаю...

А вот еще вопрос (не в тему правда): Своя страница 404 тоже через .htaccess делается?
И она у меня не запускается...
Создал свою стр. 404 потом .htaccess файл в нем записал:

ErrorDocument 404 /index.html


И тоже не работает
Может я неправильно что-то делаю?)

  Ответить  
 
 автор: cheops   (30.03.2011 в 11:14)   письмо автору
 
   для: rux   (29.03.2011 в 23:31)
 

Да вроде все правильно, может у вас в Apache отключена поддержка .htaccess...

  Ответить  
 
 автор: rux   (30.03.2011 в 12:34)   письмо автору
 
   для: cheops   (30.03.2011 в 11:14)
 

Возможно, а как это узнать?

  Ответить  
 
 автор: cheops   (30.03.2011 в 13:11)   письмо автору
 
   для: rux   (30.03.2011 в 12:34)
 

Посмотрите, что в контейнере <Directory /> прописано?

  Ответить  
 
 автор: rux   (30.03.2011 в 13:20)   письмо автору
 
   для: cheops   (30.03.2011 в 13:11)
 

Спасибо.
Вот знать бы еще где этот "<Directory />" контейнер находится... Наверно в этом httpd.conf, да?

  Ответить  
 
 автор: rux   (30.03.2011 в 13:51)   письмо автору
 
   для: cheops   (30.03.2011 в 13:11)
 

О! нашел кажись... Вот такая запись там

<Directory />
    Options Includes Indexes FollowSymLinks
    AllowOverride All
    Order deny,allow
    Allow from all
    Satisfy all
</Directory>

  Ответить  
 
 автор: cheops   (30.03.2011 в 13:59)   письмо автору
 
   для: rux   (30.03.2011 в 13:51)
 

Попробуйте в Options прописать All

  Ответить  
 
 автор: rux   (30.03.2011 в 14:13)   письмо автору
 
   для: cheops   (30.03.2011 в 13:59)
 

Спасибо, сейчас...

  Ответить  
 
 автор: rux   (30.03.2011 в 14:31)   письмо автору
 
   для: cheops   (30.03.2011 в 13:59)
 

404 - Чудеса...

  Ответить  
 
 автор: Commander   (31.03.2011 в 07:31)   письмо автору
 
   для: rux   (30.03.2011 в 14:31)
 

Попробуйте так:
RewriteEngine on  
RewriteBase /  
RewriteRule ^site/([\d+]).html$ /site/page.php?note=$1 [L]

  Ответить  
 
 автор: rux   (31.03.2011 в 15:00)   письмо автору
 
   для: Commander   (31.03.2011 в 07:31)
 

Спасибо.
Так тоже тишина (404)
Странно, как-то это всё...

P.S. начинаю посматривать в сторону кувалды)))

  Ответить  
 
 автор: psychomc   (31.03.2011 в 15:08)   письмо автору
 
   для: rux   (31.03.2011 в 15:00)
 

есть вероятность, что браузер кэширует результаты. поэтому попробуйте дописать в адресной строке:
1.hml?12345

кстати перезапускать денвер после изменения .htaccess не нужно

  Ответить  
 
 автор: rux   (31.03.2011 в 15:18)   письмо автору
 
   для: psychomc   (31.03.2011 в 15:08)
 

Спасибо, попробовал, результат тот же (404)

>кстати перезапускать денвер после изменения .htaccess не нужно
Хм... Не знал. Спасибо)

  Ответить  
 
 автор: vadimka   (07.04.2011 в 13:56)   письмо автору
 
   для: rux   (31.03.2011 в 15:18)
 

в денвере все настроено...

RewriteRule ^([\d+]).html$       site/page.php?note=$1 [L]


ErrorDocument 404 site/index.html 

  Ответить  
 
 автор: rux   (08.04.2011 в 14:14)   письмо автору
 
   для: vadimka   (07.04.2011 в 13:56)
 

Спасибо.
Пробовал, тоже не получилось...
P.S. Пока забросил эту затею)

  Ответить  
 
 автор: vadimka   (08.04.2011 в 15:40)   письмо автору
 
   для: rux   (08.04.2011 в 14:14)
 

RewriteRule ^([\d+]).html$ блин надо экранировать точки
RewriteRule ^([\d+])\.html$

  Ответить  
 
 автор: rux   (08.04.2011 в 17:15)   письмо автору
 
   для: vadimka   (08.04.2011 в 15:40)
 

Спасибо.
Может и вправду в этом дело у меня... Сейчас пробовать буду....

  Ответить  
 
 автор: rux   (09.04.2011 в 09:45)   письмо автору
 
   для: vadimka   (08.04.2011 в 15:40)
 

Пробовал вчера, "та же песня, 404")

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

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