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

Форум Apache

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

 

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

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

тема: RewriteRule
 
 автор: Leckh   (31.12.2008 в 17:29)   письмо автору
 
 

Господа, программеры, с Наступающим Вас!

Итак, в какун Нового Года хотелось бы спросить у знатоков Апача.

В .htaccss присутствует правило перенаправления
RewriteRule ^[a-z0-9_-]*-f([0-9]+)/?(page([0-9]+)\.html)?$ /viewforum.php?f=$1&start=$3

..и, поскольку, я не силен в синтаксисе, прошу помощи в написании строки, чтобы отправляла туда же но не с .html, а с /
Простой заменой \.html на / я такого эффекта не добился... подсобите, кто понимает :ugeek:

  Ответить  
 
 автор: xx77   (01.01.2009 в 16:43)   письмо автору
 
   для: Leckh   (31.12.2008 в 17:29)
 

В канун нового года наверное все знатоки Apache готовились к его встрече :)

я не понимаю, какой конкретно запрос-то будет на входе?

^[a-z0-9_-]*-f([0-9]+)/?(page([0-9]+)\.html)?$
такой шаблон похоже перенаправлял запросы типа /xxx_xxx-1-f2/page3.html
или /-f1page2.html, и даже /-f1
, если всё проверяется от / (Например RewriteBase /)


Напишите какие конкретно запросы-то могут быть
, которые нужно перенаправлять на /viewforum.php (думаю / лишнее).
почему не работает если убрать \.html ?
И желательно содержание всего того в htasccess , что относится к modRewrite

  Ответить  
 
 автор: Leckh   (01.01.2009 в 22:11)   письмо автору
 
   для: xx77   (01.01.2009 в 16:43)
 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-z0-9_-]+)(-([0-9]+))\.html$ /viewforum.php?forum_uri=$1&start=$3 [QSA,L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-z0-9_-]+)\.html$ /viewforum.php?forum_uri=$1 [QSA,L,NC]

  Ответить  
 
 автор: xx77   (01.01.2009 в 23:29)   письмо автору
 
   для: Leckh   (01.01.2009 в 22:11)
 

единственное что немного прояснило , это то что оба правила RewriteRule будут проверяться только если не существует запрашиваемого файла, или запрашивается дирректория.
Имею ввиду
RewriteCond %{REQUEST_FILENAME} !-f

первое правило ^([a-z0-9_-]+)(-([0-9]+))\.html$
обрабатывало , например по запросу /test-9.html (это если htaccess в корне сайта)
/viewforum.php?forum_uri=test&start=9
Второе например по запросу /test.html
отдавало /viewforum.php?forum_uri=test

причём всё это регистронезависимо ( NC) и с передачей исходной строки GET-запроса (QSA)
Имею ввиду /test.html?x=1
преобразовалось-бы в /viewforum.php?forum_uri=test&x=1

Но я всёравно не понимаю :) допустим этот файл лежит в корне сайта .
допустим ничего кроме таких запросов как
/test/ или /test-9/ не должно перенаправлять на /viewforum.php
типа можно просто написать
RewriteRule ^([a-z0-9_-]+)-([0-9]+)/?$ /viewforum.php?forum_uri=$1&start=$2 [QSA,L,NC]
RewriteRule ^([a-z0-9_-]+)/?$ /viewforum.php?forum_uri=$1

Но там-же могут лежать другие дирректории,
например будет реальная папка /news/ или /news-2/ , и она нужна , тогда перед обоими правилами нужно поставить RewriteCond %{REQUEST_FILENAME} !-d (не дирректории)
, а если нужно чтобы работало ещё и по старым ссылкам с .html , то это-же немного другие шаблоны.

И что-то [a-z0-9_-]+ много букв. и ещё [NC]
Неужели бывает /viewforum.php?forum_uri=BIG_Test-2-5&start=1 ? :)

  Ответить  
 
 автор: xx77   (01.01.2009 в 23:32)   письмо автору
 
   для: xx77   (01.01.2009 в 23:29)
 

или адреса будут типа /test/9/ ?

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

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