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

Форум Apache

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

 

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

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

тема: Корректировка mod_rewrite
 
 автор: Akira   (03.01.2006 в 16:31)   письмо автору
 
 

.htaccess

AddDefaultCharset windows-1251
RewriteEngine on 
Options +FollowSymlinks 
RewriteBase /
RewriteRule ^([^/.]*)/([^/.]*)/([^/.]*)/([^/.]*)/*$ index.php?year=$1&month=$2&day=$3&page=$4

Все работает, если набрать http://horsepowers/2006/1/3/2/ - год, месяц,день, страница.
Но я хочу , что бы можно было, только год, год и месяц (http://horsepowers/2006/ или http://horsepowers/2006/1). А он выводит 404. Что надо подкорректировать?

   
 
 автор: vovik_sumy   (04.01.2006 в 17:28)   письмо автору
 
   для: Akira   (03.01.2006 в 16:31)
 

[url]
http://phpclub.ru/faq/wakka.php?wakka=arch/PCLZip/PCLZip3
[/url]
Всё просто и доступно)

   
 
 автор: smertnik   (04.01.2006 в 19:55)   письмо автору
 
   для: Akira   (03.01.2006 в 16:31)
 

Фуф почти разобрался как работает данный модуль.
поидее так.

RewriteRule ^([^/.]*)/([^/.]*)/*$ index.php?year=$1&month=$2   // год/меяц/
RewriteRule ^([^/.]*)/([^/.]*)/([^/.]*)/*$ index.php?year=$1&month=$2&day=$3 // год/меяц/день/
RewriteRule ^([^/.]*)/([^/.]*)/([^/.]*)/([^/.]*)/*$ index.php?year=$1&month=$2&day=$3&page=$4 // год/меяц/день/страница/

   
 
 автор: Akira   (04.01.2006 в 22:20)   письмо автору
 
   для: smertnik   (04.01.2006 в 19:55)
 

Несколько правил? Ха-ха , а я не додумался :)) Позже попробую.

   
 
 автор: Akira   (07.01.2006 в 23:58)   письмо автору
 
   для: Akira   (03.01.2006 в 16:31)
 


AddDefaultCharset windows-1251
RewriteEngine on 
Options +FollowSymlinks 
RewriteBase /
RewriteRule ^([^/.]*)/([^/.]*)/([^/.]*)/([^/.]*)/+([^/.]*)*$ index.php?year=$1&month=$2&day=$3&page=$4&journal=$4
RewriteRule ^([^/.]*)/([^/.]*)/([^/.]*)/([^/.]*)*$ index.php?year=$1&month=$2&day=$3&page=$4
RewriteRule ^([^/.]*)/([^/.]*)/([^/.]*)*$ index.php?year=$1&month=$2&day=$3
RewriteRule ^([^/.]*)/([^/.]*)*$ index.php?year=$1&month=$2
RewriteRule ^([^/.]*)*$ index.php?year=$1

Вопрос 1-ый.
Как сделать, что бы не нужно было бы добавлять слэш в конце пути?
Вопрос 2-ой.
Как написать правило, что бы по адресу http://site.ru/admin или http://site.ru/admin. она заходил именно в папку?

   
 
 автор: Akira   (08.01.2006 в 20:07)   письмо автору
 
   для: Akira   (07.01.2006 в 23:58)
 

UP
Все еще актуально.

   
 
 автор: Akira   (08.01.2006 в 20:36)   письмо автору
 
   для: Akira   (08.01.2006 в 20:07)
 

еще, есть ссылка http://akira.spb.su/tag/%EA%EE%E4%E8%ED%E3
Это эскейп-последовательность http://akira.spb.su/tag/новшества.
А если не использовать, то браузер выдает новшества такой вид.
Может ли апач преобразовывать в %EA%EE%E4%E8%ED%E3?

   
 
 автор: glsv (Дизайнер)   (10.01.2006 в 02:24)   письмо автору
 
   для: Akira   (07.01.2006 в 23:58)
 

>Вопрос 2-ой.
Попробуйте ввести условия RewriteCond

RewriteEngine on 
Options +FollowSymlinks 
RewriteBase / 
RewriteRule ^([^/.]*)/([^/.]*)/([^/.]*)/([^/.]*)/+([^/.]*)*$ index.php?year=$1&month=$2&day=$3&page=$4&journal=$4 
RewriteRule ^([^/.]*)/([^/.]*)/([^/.]*)/([^/.]*)*$ index.php?year=$1&month=$2&day=$3&page=$4 
RewriteRule ^([^/.]*)/([^/.]*)/([^/.]*)*$ index.php?year=$1&month=$2&day=$3 

RewriteCond %{THE_REQUEST}  !admin
RewriteRule ^([^/.]*)/([^/.]*)*$ index.php?year=$1&month=$2 
RewriteCond %{THE_REQUEST}  !admin
RewriteRule ^([^/.]*)*$ index.php?year=$1

>Как сделать, что бы не нужно было бы добавлять слэш в конце пути?
А для какого URL?. Приведите пример, а то я запутался в вариантах.

   
 
 автор: Akira   (10.01.2006 в 03:34)   письмо автору
 
   для: glsv (Дизайнер)   (10.01.2006 в 02:24)
 


http://akira.spb.su/tag_name - где tag_name любое слово, мне надо, что бы оно срабатывало и на http://akira.spb.su/tag_name/
http://akira.spb.su/2006 = http://akira.spb.su/2006/
и т.д.

   
 
 автор: glsv (Дизайнер)   (12.01.2006 в 06:45)   письмо автору
 
   для: Akira   (10.01.2006 в 03:34)
 

Вот пример для вашего .htaccess.

RewriteEngine on
Options +FollowSymlinks 
RewriteBase / 
RewriteRule ^([^/.]*)/([^/.]*)/([^/.]*)/([^/.]*)/+([^/.]*)*$ index.php?year=$1&month=$2&day=$3&page=$4&journal=$4 
RewriteRule ^([^/.]*)/([^/.]*)/([^/.]*)/([^/.]*)*$ index.php?year=$1&month=$2&day=$3&page=$4 
RewriteRule ^([^/.]*)/([^/.]*)/([^/.]+)$ index.php?year=$1&month=$2&day=$3 

RewriteCond %{THE_REQUEST}  !admin
RewriteRule ^([^/.]*)/([^/.]+)/?$ index.php?year=$1&month=$2 
RewriteCond %{THE_REQUEST}  !admin
RewriteRule ^([^/.]*)/?$ index.php?year=$1

Правильно обрабатываются URL

http://www.site.ru/dir = http://www.site.ru/dir/
http://www.site.ru/dir/subdir = http://www.site.ru/dir/subdir/


Например, чтобы

http://www.site.ru/dir был равено http://www.site.ru/dir/

нужно было заменить * (стояло изначально) на + в скобке ([^/.]+)

RewriteRule ^([^/.]*)/([^/.]+)/?$ index.php?year=$1&month=$2 

([^/.]*) - все кроме слеша может повторено 0 и более раз
([^/.]+) - все кроме слеша может повторено 1 и более раз
А так, как данное правило должно обрабатывать URL c 2-мя параметрами, то нужно ставить +, иначе правило ошибочно срабатывало для URL c одним параметром.

И нужно было добавить обработку последнего слеша в правило для обработки URL с одним параметром.
/? - символ слеша может быть повторен 0 или один раз. Т.е. он может быть, а может и отсутсвовать в URL.

RewriteRule ^([^/.]*)/?$ index.php?year=$1

   
 
 автор: Akira   (12.01.2006 в 12:43)   письмо автору
 
   для: glsv (Дизайнер)   (12.01.2006 в 06:45)
 

Спасибо :)) А то я книгу O'Relly "Регулярные выражения" потерял.

   
Rambler's Top100
вверх

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