|
|
|
| Господа, программеры, с Наступающим Вас!
Итак, в какун Нового Года хотелось бы спросить у знатоков Апача.
В .htaccss присутствует правило перенаправления
RewriteRule ^[a-z0-9_-]*-f([0-9]+)/?(page([0-9]+)\.html)?$ /viewforum.php?f=$1&start=$3
..и, поскольку, я не силен в синтаксисе, прошу помощи в написании строки, чтобы отправляла туда же но не с .html, а с /
Простой заменой \.html на / я такого эффекта не добился... подсобите, кто понимает :ugeek: | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: 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]
|
| |
|
|
|
|
|
|
|
для: 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:29)
| | или адреса будут типа /test/9/ ? | |
|
|
|