воскресенье, 1 июня 2008 г.

.htaccess. основные моменты.

Часто задаваемые вопросы про ".htaccess"


  1. Как сделать свои страницы ошибок?
  2. Как сделать редирект (переадресацию) с помощью .htaccess?
  3. Как указать стартовую страницу с помощью файла .htaccess?
  4. Как проверить права доступа с помощью файла .htaccess?
  5. Как сделать, чтобы php обрабатывался в файлах с расширением .html?
  6. Как заблокировать доступ к сайту/папке сайта с определенного компьютера?
  7. Как запретить посещать мой сайт людям, которые пользуются прокси-сервером?
  8. Обработка .html файлов как сценариев PHP
  9. Как сделать, чтобы SSI обрабатывалась в файлах с расширением .htm .html?
  10. Добавил файл .htaccess, и теперь сервер выдает 500 ошибку. Почему?


Как сделать свои страницы ошибок?

В файле .htaccess нужно прописать:

ErrorDocument 404 http://Ваш_домен/error404.html
ErrorDocument 403 http://Ваш_домен/error403.html
ErrorDocument 500 http://Ваш_домен/error500.html

Потом создать и залить файлы с вышеуказанными названиями на сервер.

Как сделать редирект (переадресацию) с помощью .htaccess?

Нужно прописать в .htaccess:

Redirect temp /пишем_откуда куда

например:

Redirect temp /forum http://karman.com.ua/

будет редирект с папки forum на главную страницу сайта.

Как указать стартовую страницу с помощью файла .htaccess?

Что бы поменять страницу, которая будет показываться при обращении к директории, пишем:

DirectoryIndex <нужная страница>

Можно указывать несколько страниц.

DirectoryIndex index.shtml index.php index.php3 index.html index.htm

Как проверить права доступа с помощью файла .htaccess?

Задача: есть каталог К1 и в нем два вложенных каталога К2, К3, введено 2 уровня пользователей. Первая группа имеет доступ только к К1 и К2, вторая ко всем трем каталогам. Необходимо проводить аутентификацию только 1 раз - при доступе к К1, но при этом соблюдать права на доступ к К2 и К3.

Имя пользователя и пароль запрашиваются только при входе на К1 - если у пользователя есть доступ на К2 пароль уже не запрашивается. Если на К3 доступа нет, выводится приглашение ввести пароль.

www.site.ru/К1

www.site.ru/К1/К2

www.site.ru/К1/К3

К1 - общий и вместе с тем закрытый. К2 и К3 только для отдельных личностей.

файл .htaccess для каталога К1:

AuthName "Input password"

AuthType Basic

AuthUserFile "/pub/home/login/htdocs/.htpasswd"


require valid-user


файл .htaccess для каталога К2:

AuthName "Input password"

AuthType Basic

AuthUserFile "/pub/home/login/htdocs/clousearea/.htpasswd"


require user user1 user2 user3


файл .htaccess для каталога а3:

AuthName "Input password"

AuthType Basic

AuthUserFile "/pub/home/htdocs/clousearea/.htpasswd"


require user user1 user2 user5

Как сделать, чтобы php обрабатывался в файлах с расширением .html?

Вам необходимо добавить в файл .htaccess следующие две строчки:
RemoveHandler .html
AddType application/x-httpd-php .html

Как заблокировать доступ к сайту/папке сайта с определенного компьютера?

Для этого необходимо в корне сайта (или в нужной папке) добавить в файл .htaccess строки:
Order Allow,Deny
Allow from all
Deny from xxx.xxx.xxx.xxx

где xxx.xxx.xxx.xxx - это ip-адрес компьютера, которому запрещается доступ. Возможно также указывать доменное имя. В директивах Deny и Allow можно перечислять через пробел ip или доменные имена. Директива Order определяет последовательность применения директив Allow и Deny, т.е. "Order Allow,Deny" сначала разрешит доступ тем, кто упомянут в директиве Allow, затем запретит тем, кто упомянут в Deny. Если стоит задача обеспечить доступ только с определенного компьютера, то следует давать такие директивы в .htaccess:
Order Deny,Allow
Deny from all
Allow from xxx.xxx.xxx.xxx

Как запретить посещать мой сайт людям, которые пользуются прокси-сервером?

Не каждый прокси-сервер отмечает свое присутствие в заголовках http-запроса. Поэтому со 100%-й гарантией это сделать невозможно. Однако, большинство прокси-серверов ставят в заголовок http-запроса поле Via. Рассмотрим пример, который отправляет всех пользователей, которые пришли через прокси-сервер, на главную страницу karman.com.ua. Для этого в файл .htaccess надо добавить следующие строчки:

RewriteEngine On
RewriteCond %{HTTP:VIA} .+
RewriteRule (.+) http://karman.com.ua/

Обработка .html файлов как сценариев PHP

Что бы сервер обрабатывал .html и .htm файлы на предмет включения PHP кода, необходимо создать или модифицировать Ваш файл .htaccess в каталоге public_html, и включить в него следующие строки:

AddType application/x-httpd-php .html
AddType application/x-httpd-php .htm

Как сделать, чтобы SSI обрабатывалась в файлах с расширением .htm .html?

надо добавить в файл .htaccess строчку :
AddHandler server-parsed .shtml .shtm .htm .html

Добавил файл .htaccess, и теперь сервер выдает 500 ошибку. Почему?

Причины 500-й (Internal Server Error) ошибки:
1) неверный синтаксис .htaccess
2) файл .htaccess записан в формате Windows, а должен быть записан в формате UNIX
3) в файле прописаны переменные которые не могут работать когда на сервере установлен SUEXEC. Например: php_flag, php_value, AddType и т.д.

взято отсюда

Комментариев нет: