Есть БД. Там хранится URL страницы. id title text url Как сделать один файл, чтоб об обрабатывал определенный запрос. Например чтоб на странице выводился текст, а эта url этой страницы был такой, которой соотвестствует полю url в БД. Например есть таблица: 1 Новости тексттновости 2 О компании текстОкомпании about Если жму по ссылке НОВОСТИ то в адресной строке выходит www.mysite/news и выводится текстновости, а если жму ссылку о компании, то соответственно www.mysite/about и текстОкомпании. Может ссылочку дадите где это почитать?
greenzlat Я вырвал куски из DataLife Engine. Код (Text): RewriteRule ^servers(/?)+$ index.php?do=cs [L] RewriteRule ^addserver.html$ index.php?do=cs-add [L] RewriteRule ^add-complete.html$ index.php?do=cs-add&add [L] RewriteRule ^server(/?)+$ index.php?do=cs-full [L] RewriteRule ^server/([^/]+)-([^/]+).html$ index.php?do=cs-full&ip=$1&port=$2 [L] гугл вроде-как работает... http://crazy-russian.ru/development/kak ... ccess.html http://www.art-shok.ru/advice/htaccess-examples/
greenzlat Код (Text): RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !=/favicon.ico RewriteRule ^(.*)$ index.php?route=$1 [L,QSA] внутри файла index.php ловишь переменную $_GET['route']
Gromo, вы делаете проверку пути к странице: Если это не каталог, не файл и не иконка, тогда делаем из ссылки site.ru/about.php ссылку index.php?route=about.php так понял?
kir55rus если запрошенного файла или каталога не существует - отдать на растерзание index.php в виде $_GET параметра route. если запрашивается иконка /favicon.ico, то данный запрос игнорируется, даже если файл favicon.ico не существует.
новую тему создавать не буду.. название похоже. есть проблема, прописал в .htaccess следующее: Код (Text): RewriteEngine On RewriteRule ^поздравления/(.*).html(/?)+$ pozdravleniya.php?poz=$1 [L] этот вариант не работает, выводится сообщение not found но все отлично работает, если сделать так: Код (Text): RewriteEngine On RewriteRule ^pozdravleniya/(.*).html(/?)+$ pozdravleniya.php?poz=$1 [L] в чем проблема? разве нельзя работать с кириллическими символами? а как тогда сделали на Википедии?
а вот как у меня пример, так и на википедии. по крайней мере у меня все киррилические урлы работают главное - в кодировке не ошибиться. ютф8 рулит
в $_GET['route'] будет хранится вся адресная строка? но ведь так не удобно потом будет извлекать из нее нужные данные. зы:прочитал статью около часа назад, там было написано, что яндекс не может сканировать сайты с кириллическими ЧПУ, правда ли это? на счет гугла было написано, что он это проходит нормально. зы2:лучше для оптимизации делать ссылки транслитом или переводом строк? т.е. из ссылки на статью "Как дела" лучше делать site.ru/how-are-you/ или site.ru/kak-dela/
kir55rus что яндекс не может сканировать сайты с кириллическими ЧПУ блин, википедию он не может сканировать? неужели блин ни на секунду не научили задумываться хоть чуть-чуть над всем тем что тебе говорят? =) это может стать проблемой в старости...
Gromo Наверное имеется в виду, что REQUEST_URI парсить можно вместо route. В принципе это правильно) Меньше операций, меньше переменных
tommyangelo как вариант - да. REDIRECT_URL ))) т.к. REQUEST_URI показывает всю строку запроса вместе с $_GET данными.
именно это я и хотел сказать. Мне кажется стоит больше доверять пхп. гет в гете искать, пост в посте, а урл в реквест_ури. у меня это выглядит так: Код (Text): <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !=/favicon.ico RewriteRule ^.*$ index.php [L,QSA] </IfModule> что значат вторая и третья строка - я не в курсах =)
решил сделать я через транслит, но теперь проблема с постраничной навигацией. вот правила: Код (Text): RewriteEngine On RewriteRule ^pozdravleniya/([0-9]{1,3})-(.*)\.html\?page=([1-9]{1,3})$ pozdravleniya.php?id=$1&page=$3 [L] RewriteRule ^pozdravleniya/([0-9]{1,3})-(.*)\.html$ pozdravleniya.php?id=$1 [L] RewriteRule ^scenarii/([0-9]{1,3})-(.*).html$ scenarii.php?id=$1 [L] RewriteRule ^tosty/([0-9]{1,3})-(.*).html$ tosty.php?id=$1 [L] RewriteRule ^razvlecheniya/([0-9]{1,3})-(.*).html$ razvlecheniya.php?id=$1 [L] не работает строка Код (Text): RewriteRule ^pozdravleniya/([0-9]{1,3})-(.*)\.html\?page=([1-9]{1,3})$ pozdravleniya.php?id=$1&page=$3 [L] опытным путем выяснил, что не работает из-за знака ? если использовать др. символы для разделения .html и page=2 то все ок. как только использую ?, ничего не работает. вот кстати адресная строка, которая должна попадать под обработку: pozdravleniya/1-s-dnem-rozhdeniya-muzhchine.html?page=2 благодарен за помощь ***добавлено пожалуй сделаю добавку, что с правилом Код (Text): RewriteRule ^pozdravleniya/([0-9]{1,3})-(.*)\.html.page=([1-9]{1,3})$ pozdravleniya.php?id=$1&page=$3 [L] работают все символы, но опять кроме знака ?
я вроде итак его экранировал. как и точку перед html Код (Text): RewriteRule ^pozdravleniya/([0-9]{1,3})-(.*)\.html\?page=([1-9]{1,3})$ pozdravleniya.php?id=$1&page=$3 [L] ****Проблему решил. подправил код. вот итог, если кому интересно: Код (Text): RewriteEngine On RewriteRule ^pozdravleniya/([0-9]{1,3})-(.*)\.html(/?)+$ pozdravleniya.php?id=$1 [L,QSA,NE] RewriteRule ^scenarii/([0-9]{1,3})-(.*).html(/?)+$ scenarii.php?id=$1 [L,QSA,NE] RewriteRule ^tosty/([0-9]{1,3})-(.*).html(/?)+$ tosty.php?id=$1 [L,QSA,NE] RewriteRule ^razvlecheniya/([0-9]{1,3})-(.*).html(/?)+$ razvlecheniya.php?id=$1 [L,QSA,NE]