Помогите написать htacces

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем the_stalker, 4 янв 2008.

Статус темы:
Закрыта.
  1. the_stalker

    the_stalker Постоялец

    Регистр.:
    19 фев 2007
    Сообщения:
    116
    Симпатии:
    3
    Посмотрел пару тем, но так и не смог разобраться. Этот htaccess для меня как китайская грамота.

    Задача такова
    При заходе на страницу например
    http://localhost/archive/sample-post.htm
    Должна грузится индексная страница которая лежит в корне.

    Мне главное что бы по любому адресу грузился идексный файл, а в нем уже я с помощью пхп буду отображать разный контент.
     
  2. mentanos

    mentanos Постоялец

    Регистр.:
    27 дек 2007
    Сообщения:
    128
    Симпатии:
    35
    Код:
    rewriteengine on
    rewritecond %{REQUEST_URI} !\.(gif|jpeg|jpg|css|js|zip|rar)$
    rewriterule ^(.+)$ index.php?originalUri=%{REQUEST_URI}&%{QUERY_STRING}
    Вторая строка - для отсечения случаев, когда переписывать uri не нужно. В данном примере я написал отсечение по расширению запрошенных файлов. Но лучше если ты все файлы, которые должны напрямую передаваться юзеру, поместишь в один каталог - назовем его external - и правило отсечения напишем как
    Код:
    rewritecond %{REQUEST_URI} !/external/
    т.е. если в запрошенном uri есть строка /external/, то управление на index.php передаваться не будет.

    Третья строка передает управление на index.php, передавая индексу кроме всех исходных параметров, дополнительный - originalUri, в котором находится запрошенный uri.
     
  3. the_stalker

    the_stalker Постоялец

    Регистр.:
    19 фев 2007
    Сообщения:
    116
    Симпатии:
    3
    Что-то ты намудрил, нихера не работает.
    У меня файлы должны быть динамическими
    файла с названием sample-post.htm нету поэтому должен загружатся index.php в котром я через $_SERVER['REQUEST_URI] буду парсить название файла
     
  4. zavulon

    zavulon Постоялец

    Регистр.:
    9 май 2007
    Сообщения:
    79
    Симпатии:
    34
    Если есть mod_rewrite
    Код:
    Options +FollowSymlinks -MultiViews -Indexes
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
    </IfModule>
    
    Если нет, то ставь на ошибку 404 и посмотри в $_SERVER вызываемый Url
     
  5. mentanos

    mentanos Постоялец

    Регистр.:
    27 дек 2007
    Сообщения:
    128
    Симпатии:
    35
    Сорь, у меня ошибка была. Zavulon хорошо написал.

    Если что не работает с rewrite, пропиши в httpd.conf для нужного хоста следующее:
    RewriteLog абсолютный_путь_к_файлу_лога
    RewriteLogLevel число_от_0_до_9

    Получишь лог всех операций, выполняемых при обработке rewrite-ом. RewriteLogLevel 3 уже показывает достаточно детально процесс, можно больше трех не ставить.

    Zavulon, а ведь можно просто переписывать на index.php [QSA,L], без ?url=..... . $_SERVER['REQUEST_URI'] ведь выставляется из окружения "снаружи", а не из соображений php, который "видит" вызов именно index.php.
     
  6. zavulon

    zavulon Постоялец

    Регистр.:
    9 май 2007
    Сообщения:
    79
    Симпатии:
    34
    Мне так спокойнее. Уверен, что будет работать везде, где есть Apache+mod_rewrite, независимо от сумашедших ручек админов хостингов.
     
  7. Alexitdv

    Alexitdv

    Регистр.:
    4 янв 2008
    Сообщения:
    161
    Симпатии:
    65
    А можно вот так))
    Action Name "/_Kernel/Scriptor.php"
    AddHandler Name .htm

    Что будет? А будет вот что: при наборе в браузере адреса какой-либо страницы с расширением htm будет выводится результат работы скрипта Scriptor.php
     
Статус темы:
Закрыта.