DpoHro
Новичок
mod_rewrite, о наболевшем 
Вот не панацея, но с некоторыми модификациями можно использовать
############################################################################################
#
# Файл .htaccess написан в помощь web-разработчикам-новичкам
таким же новичком
# для создания ЧПУ (человеко-понятных урлов), готов к применению
#
# При написании были использованы:
# Apache HTTP Server Documentation Project: http://httpd.apache.org/docs-project/
# Материалы сайта: http://phpclub.ru
#
# Автор файла: Зверев Валентин (DpoHro)
# На связи: zverev[тра-ля-ля]cps.tver.ru
#
############################################################################################
############################################################################################
#
# Переадресация обработки ошибки
# Директива ErrorDocument служит для указания серверу сценария обработки ошибок
# Формат: ErrorDocument <код ошибки> <путь к скрипту-обработчику>
#
############################################################################################
ErrorDocument 404 /errors/error404.html
#ErrorDocument <code> /errors/error<code>.html
############################################################################################
#
# Врубаем движок перезаписи
# Перезапись производится следующим образом:
# На каждый модуль - отдельная виртуальная папка
# Виртуальная папка создается путем создания правила для определенных URL, например,
# хотим создать папку /user/ тогда пишем правило:
#
# RewriteRule ^user[/](.*)[/](.*).html[/]$ ./index.php?module=user¶m=$1&page=$2 [QSA]
# RewriteRule ^user[/](.*).html[/]$ ./index.php?module=user&page=$1 [QSA]
#
# Здесь первая строка указывает что адреса вида
# http://www.domain.ru/user/somedir/somefile.html
# http://www.domain.ru/user/somedir/
# будут переписаны как
# http://www.domain.ru/index.php?module=user¶m=somedir&page=somefile
# http://www.domain.ru/index.php?module=user&page=somefile
#
# Далее один уровень - подкаталогов
# Далее файл с расширением .html
# Вид урла: http://www.domain.ru/module/somefilder/somefile.html
#
############################################################################################
#<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
############################################################################################
#
# Директива RewriteBase указывает физический путь относительно которого будут располагаться
# перезаписываемые страницы.
#
############################################################################################
RewriteBase /
############################################################################################
#
# Запрещаем доступ к файлам .htaccess и директориям
# Как работает RewriteRule
# Формат: RewriteRule <разбор входящей (перезаписываемой) строки> <составление новой (записываемой) строки>
# Разбор вх. строки производится при помощи спец. символов:
#
# Текст:
# . - один символ (в данном месте стоит какой-либо символ)
# [chars] - один из символов (в данном месте стоит один из перечисленных символов)
# [^chars] - ни один из символов (в данном месте не стоит ни одного из перечисленных символов)
# text1|text2 - Либо text1, либо text2
#
# Повторители:
# ? - 0 или 1 раз повторяетсяпредшествующий текст
# * - 0 или N раз повторяетсяпредшествующий текст
# 1 - 0 или N раз повторяетсяпредшествующий текст
#
# Якори:
# ^ - Начало разбираемой строки
# $ - Конец разбираемой строки
#
# Экранирование:
# \char - Возможно такое, что служебные символы будут присутствовать в перезаписываемом тексте
# и чтобы возможно было разобрать подобное выражение нужно будет указать, чтобы они не принимались
# за служебные, это производится установкой перед ними обратного слеша (экранирование)
# Например: ^/\((.*)\)/$ будет проинтерпретирован как строка запроса /(sometext)/ и из нее
# в переменную $1 будет помещен текст sometext
#
############################################################################################
RewriteRule ^.htaccess - [F] # незачем знать, что написано в этом самом файле хотя он вроде по умолчанию недоступен
RewriteRule ^admin - [F] # нех лазить по физической директории CMS
RewriteRule ^settings.php - [F] # нех лазить по файлу с настройками
############################################################################################
#
# разрешаем доступ к существующим файлам и директориям (если это требуется)
# Директива RewriteCond. Это своего рода условный оператор
#
# Формат: RewriteCond %{NAME_OF_VARIABLE} ^formated-string*
#
# NAME_OF_VARIABLE - это предопределенные переменные перечисленные ниже
#
# HTTP-заголовки:
#
# HTTP_USER_AGENT
# HTTP_REFERER
# HTTP_COOKIE
# HTTP_FORWARDED
# HTTP_HOST
# HTTP_PROXY_CONNECTION
# HTTP_ACCEPT
#
# Коннекты и запросы:
#
# REMOTE_ADDR
# REMOTE_HOST
# REMOTE_USER
# REMOTE_IDENT
# REQUEST_METHOD
# SCRIPT_FILENAME
# PATH_INFO
# QUERY_STRING
# AUTH_TYPE
#
# Внутренние переменные сервера:
#
# DOCUMENT_ROOT
# SERVER_ADMIN
# SERVER_NAME
# SERVER_ADDR
# SERVER_PORT
# SERVER_PROTOCOL
# SERVER_SOFTWARE
#
# Системные переменные:
#
# TIME_YEAR
# TIME_MON
# TIME_DAY
# TIME_HOUR
# TIME_MIN
# TIME_SEC
# TIME_WDAY
# TIME
#
# Специальные:
#
# API_VERSION
# THE_REQUEST
# REQUEST_URI
# REQUEST_FILENAME
# IS_SUBREQ
#
# Пример:
# RewriteCond %{REMOTE_HOST} ^host1.* [OR,NC]
# RewriteCond %{REMOTE_HOST} ^host2.* [OR,NC]
# RewriteCond %{REMOTE_HOST} ^host3.* [NC]
# RewriteRule ^/$ - [F]
# Запрещаем вход на сайт с хостов host1,host2,host3
#
# Есть два полезных флага [OR] означает чтото типа "или следующее условие"
# это если их два или более подряд идущих и выполняться должно хотябы одно из них,
# и флажок [NC] - назначение "не учитывать регистр"
#
# Насамом деле RewriteCond я бы использовал для того, чтобы ограничивать/расширять доступ
# юзерам/агентам, в зависимости от параметров содержащихся в переменных, которые они
# приносят вместе с собой
# То есть, роботов и гостей с опредеделенных IP , например, блокируем, Другие гостям с опять же
# определенных адресов обрабатываем одним скриптом, оставшихся по умолчанию
#
############################################################################################
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
############################################################################################
#
# добавляем слеш в конце пути. Это необходимо для того, чтобы ссылки вида:
#
# http://www.domain.ru/news
# и
# http://www.domain.ru/news/
#
# обрабатывались одинаково
#
RewriteRule ^(.+[^/])$ $1/ [QSA]
############################################################################################
#
# обработка директории ошибки
# один скрипт на обработку всех ошибок, в нем можно ставить редиректы, чтобы пользователю
# не выдавались пресловутые надписи о невозможности чего-либо при помощи вашего сайта,
# а предлагалось бы найти информацию воспользовавшись поиском
#
RewriteRule ^errors/error(.*).html[/]$ ./errors/error.php?code=$1 [QSA]
############################################################################################
#
# обработка директории модуля USER
#
RewriteRule ^user[/](.*)[/](.*).html[/]$ ./index.php?module=user¶m=$1&page=$2 [QSA]
RewriteRule ^user[/](.*).html[/]$ ./index.php?module=user&page=$1 [QSA]
############################################################################################
#
# обработка директории модуля ADMINISTRATOR
# папка Content Management System (CMS) расположена произвольно, адрес доступа
# http://www.domain.ru/administrator/index.php
#
RewriteRule ^administrator[/]index.php[/]$ ./admin/index.php [QSA]
############################################################################################
#
# обработка корневой директории. так как это последнее правило, то тут необходимо исключить
# возможное включение слешей в пути к странице, другими словами, чтобы было невозможно обработать
# путь вида http://www.domain.ru/somedir/somedir/file.html, если не найдена ни одна из выше
# обрабатываемых директорий, делаем это исключением из пути слешей записью [^/]
#
RewriteRule ^([^/]+).html[/]$ ./index.php?page=$1 [QSA]
#</IfModule>
############################################################################################
#
# Теперь как все должно быть в коде...
# Смысл этого всего в том, чтобы будь то поисковик будь то реальный пользователь не видел
# охрененных URLов типа http://www.domain.ru/index.php?m=news&d=21&m=11&y=04&col=11&id=12345
# и при этом, трудно воспроизводимых.
#
# Следовательно, при использовании mod_rewrite ваш скрипт должен генерить ссылки вида:
# http://www.domain.ru/news/14112005/hotnews.html
# а принимать ссылку вида
# http://www.domain.ru/index.php?module=news&date=14112005&category=hotnews
# Ну или такую ссылку которую вы задумаете и опишите в этом файле
#
# Так что структура сайта должна быть основательно продумана заранее, затем должен быть
# написан сейфайл как надо, а уж после приступайте к коду
#
# Удачи! Мыльте на: zverev[тра-ля-ля]cps.tver.ru
# Может кто поправит/дополнит и сподобимся вместе написать более подробную весчь
-~{}~ 16.11.05 22:51:
Да, это .htaccess

Вот не панацея, но с некоторыми модификациями можно использовать

############################################################################################
#
# Файл .htaccess написан в помощь web-разработчикам-новичкам


# для создания ЧПУ (человеко-понятных урлов), готов к применению
#
# При написании были использованы:
# Apache HTTP Server Documentation Project: http://httpd.apache.org/docs-project/
# Материалы сайта: http://phpclub.ru
#
# Автор файла: Зверев Валентин (DpoHro)
# На связи: zverev[тра-ля-ля]cps.tver.ru
#
############################################################################################
############################################################################################
#
# Переадресация обработки ошибки
# Директива ErrorDocument служит для указания серверу сценария обработки ошибок
# Формат: ErrorDocument <код ошибки> <путь к скрипту-обработчику>
#
############################################################################################
ErrorDocument 404 /errors/error404.html
#ErrorDocument <code> /errors/error<code>.html
############################################################################################
#
# Врубаем движок перезаписи
# Перезапись производится следующим образом:
# На каждый модуль - отдельная виртуальная папка
# Виртуальная папка создается путем создания правила для определенных URL, например,
# хотим создать папку /user/ тогда пишем правило:
#
# RewriteRule ^user[/](.*)[/](.*).html[/]$ ./index.php?module=user¶m=$1&page=$2 [QSA]
# RewriteRule ^user[/](.*).html[/]$ ./index.php?module=user&page=$1 [QSA]
#
# Здесь первая строка указывает что адреса вида
# http://www.domain.ru/user/somedir/somefile.html
# http://www.domain.ru/user/somedir/
# будут переписаны как
# http://www.domain.ru/index.php?module=user¶m=somedir&page=somefile
# http://www.domain.ru/index.php?module=user&page=somefile
#
# Далее один уровень - подкаталогов
# Далее файл с расширением .html
# Вид урла: http://www.domain.ru/module/somefilder/somefile.html
#
############################################################################################
#<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
############################################################################################
#
# Директива RewriteBase указывает физический путь относительно которого будут располагаться
# перезаписываемые страницы.
#
############################################################################################
RewriteBase /
############################################################################################
#
# Запрещаем доступ к файлам .htaccess и директориям
# Как работает RewriteRule
# Формат: RewriteRule <разбор входящей (перезаписываемой) строки> <составление новой (записываемой) строки>
# Разбор вх. строки производится при помощи спец. символов:
#
# Текст:
# . - один символ (в данном месте стоит какой-либо символ)
# [chars] - один из символов (в данном месте стоит один из перечисленных символов)
# [^chars] - ни один из символов (в данном месте не стоит ни одного из перечисленных символов)
# text1|text2 - Либо text1, либо text2
#
# Повторители:
# ? - 0 или 1 раз повторяетсяпредшествующий текст
# * - 0 или N раз повторяетсяпредшествующий текст
# 1 - 0 или N раз повторяетсяпредшествующий текст
#
# Якори:
# ^ - Начало разбираемой строки
# $ - Конец разбираемой строки
#
# Экранирование:
# \char - Возможно такое, что служебные символы будут присутствовать в перезаписываемом тексте
# и чтобы возможно было разобрать подобное выражение нужно будет указать, чтобы они не принимались
# за служебные, это производится установкой перед ними обратного слеша (экранирование)
# Например: ^/\((.*)\)/$ будет проинтерпретирован как строка запроса /(sometext)/ и из нее
# в переменную $1 будет помещен текст sometext
#
############################################################################################
RewriteRule ^.htaccess - [F] # незачем знать, что написано в этом самом файле хотя он вроде по умолчанию недоступен
RewriteRule ^admin - [F] # нех лазить по физической директории CMS
RewriteRule ^settings.php - [F] # нех лазить по файлу с настройками
############################################################################################
#
# разрешаем доступ к существующим файлам и директориям (если это требуется)
# Директива RewriteCond. Это своего рода условный оператор
#
# Формат: RewriteCond %{NAME_OF_VARIABLE} ^formated-string*
#
# NAME_OF_VARIABLE - это предопределенные переменные перечисленные ниже
#
# HTTP-заголовки:
#
# HTTP_USER_AGENT
# HTTP_REFERER
# HTTP_COOKIE
# HTTP_FORWARDED
# HTTP_HOST
# HTTP_PROXY_CONNECTION
# HTTP_ACCEPT
#
# Коннекты и запросы:
#
# REMOTE_ADDR
# REMOTE_HOST
# REMOTE_USER
# REMOTE_IDENT
# REQUEST_METHOD
# SCRIPT_FILENAME
# PATH_INFO
# QUERY_STRING
# AUTH_TYPE
#
# Внутренние переменные сервера:
#
# DOCUMENT_ROOT
# SERVER_ADMIN
# SERVER_NAME
# SERVER_ADDR
# SERVER_PORT
# SERVER_PROTOCOL
# SERVER_SOFTWARE
#
# Системные переменные:
#
# TIME_YEAR
# TIME_MON
# TIME_DAY
# TIME_HOUR
# TIME_MIN
# TIME_SEC
# TIME_WDAY
# TIME
#
# Специальные:
#
# API_VERSION
# THE_REQUEST
# REQUEST_URI
# REQUEST_FILENAME
# IS_SUBREQ
#
# Пример:
# RewriteCond %{REMOTE_HOST} ^host1.* [OR,NC]
# RewriteCond %{REMOTE_HOST} ^host2.* [OR,NC]
# RewriteCond %{REMOTE_HOST} ^host3.* [NC]
# RewriteRule ^/$ - [F]
# Запрещаем вход на сайт с хостов host1,host2,host3
#
# Есть два полезных флага [OR] означает чтото типа "или следующее условие"
# это если их два или более подряд идущих и выполняться должно хотябы одно из них,
# и флажок [NC] - назначение "не учитывать регистр"
#
# Насамом деле RewriteCond я бы использовал для того, чтобы ограничивать/расширять доступ
# юзерам/агентам, в зависимости от параметров содержащихся в переменных, которые они
# приносят вместе с собой

# То есть, роботов и гостей с опредеделенных IP , например, блокируем, Другие гостям с опять же
# определенных адресов обрабатываем одним скриптом, оставшихся по умолчанию
#
############################################################################################
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
############################################################################################
#
# добавляем слеш в конце пути. Это необходимо для того, чтобы ссылки вида:
#
# http://www.domain.ru/news
# и
# http://www.domain.ru/news/
#
# обрабатывались одинаково
#
RewriteRule ^(.+[^/])$ $1/ [QSA]
############################################################################################
#
# обработка директории ошибки
# один скрипт на обработку всех ошибок, в нем можно ставить редиректы, чтобы пользователю
# не выдавались пресловутые надписи о невозможности чего-либо при помощи вашего сайта,
# а предлагалось бы найти информацию воспользовавшись поиском
#
RewriteRule ^errors/error(.*).html[/]$ ./errors/error.php?code=$1 [QSA]
############################################################################################
#
# обработка директории модуля USER
#
RewriteRule ^user[/](.*)[/](.*).html[/]$ ./index.php?module=user¶m=$1&page=$2 [QSA]
RewriteRule ^user[/](.*).html[/]$ ./index.php?module=user&page=$1 [QSA]
############################################################################################
#
# обработка директории модуля ADMINISTRATOR
# папка Content Management System (CMS) расположена произвольно, адрес доступа
# http://www.domain.ru/administrator/index.php
#
RewriteRule ^administrator[/]index.php[/]$ ./admin/index.php [QSA]
############################################################################################
#
# обработка корневой директории. так как это последнее правило, то тут необходимо исключить
# возможное включение слешей в пути к странице, другими словами, чтобы было невозможно обработать
# путь вида http://www.domain.ru/somedir/somedir/file.html, если не найдена ни одна из выше
# обрабатываемых директорий, делаем это исключением из пути слешей записью [^/]
#
RewriteRule ^([^/]+).html[/]$ ./index.php?page=$1 [QSA]
#</IfModule>
############################################################################################
#
# Теперь как все должно быть в коде...
# Смысл этого всего в том, чтобы будь то поисковик будь то реальный пользователь не видел
# охрененных URLов типа http://www.domain.ru/index.php?m=news&d=21&m=11&y=04&col=11&id=12345
# и при этом, трудно воспроизводимых.
#
# Следовательно, при использовании mod_rewrite ваш скрипт должен генерить ссылки вида:
# http://www.domain.ru/news/14112005/hotnews.html
# а принимать ссылку вида
# http://www.domain.ru/index.php?module=news&date=14112005&category=hotnews
# Ну или такую ссылку которую вы задумаете и опишите в этом файле
#
# Так что структура сайта должна быть основательно продумана заранее, затем должен быть
# написан сейфайл как надо, а уж после приступайте к коду
#
# Удачи! Мыльте на: zverev[тра-ля-ля]cps.tver.ru
# Может кто поправит/дополнит и сподобимся вместе написать более подробную весчь

-~{}~ 16.11.05 22:51:
Да, это .htaccess
