This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
khosb/includes/kohana/modules/userguide/guide/ru-ru/tutorials.removeindex.md

88 lines
4.2 KiB
Markdown
Raw Normal View History

2010-08-21 04:43:03 +00:00
# Удаление из URL `index.php`
Для чистоты URL, Вам наверняка захочется иметь доступ до разделов Вашего приложения без `/index.php/` в адресной строке. Для этого необходимо выполнить 2 действия.
1. Откорректировать bootstrap файл
2. Установить возможности rewriting'а на Вашем веб-сервере
# Конфигурирование Bootstrap
Первое, что следует сделать - это изменить значение `index_file` в [Kohana::init]:
Kohana::init(array(
'base_url' => '/myapp/',
'index_file' => FALSE,
));
Теперь все ссылки, генерируемые методами [URL::site], [URL::base], и [HTML::anchor] не будут использовать "index.php" при построении URL. Все генерируемые ссылки будут начинаться с `/myapp/` вместо `/myapp/index.php/`.
# URL Rewriting
В зависимости от Вашего сервера, rewriting активируется по разному.
## Apache
Переименуйте `example.htaccess` в `.htaccess` и измените следующую строчку кода:
RewriteBase /kohana/
RewriteBase должен совпадать со значением, указанным у Вас в `base_url` свойстве [Kohana::init]:
RewriteBase /myapp/
В большинстве случаев - это всё, что необходимо сделать.
### Ошибка!
Если вдруг Вы стали получать ошибки в виде "Internal Server Error" или "No input file specified", попытайтесь изменить `.htaccess` следующее:
RewriteRule ^(?:application|modules|system)\b - [F,L]
Вместо параметра `\b` попробуйте использовать слеш:
RewriteRule ^(application|modules|system)/ - [F,L]
Если это не поможет, попробуйте изменить следующее:
RewriteRule .* index.php/$0 [PT]
На что-то более простое:
RewriteRule .* index.php [PT]
### Всё равно ошибка!
Если всё ещё получаете ошибки, убедитесь, что Ваш хостинг предоставляет поддержку Apache `mod_rewrite`. Если у Вас есть доступ до изменения настроек Apache, то добавьте следующие строки в конфигурационный файл (зачастую это `httpd.conf`):
<Directory "/var/www/html/myapp">
Order allow,deny
Allow from all
AllowOverride All
</Directory>
## NGINX
Тяжело дать пример конфигурации nginx сервера, но можно использовать следующий пример для server блока:
location / {
index index.php index.html index.htm;
try_files $uri $uri/ index.php$uri?$args;
}
location ~ ^(.+\.php)(.*)$ {
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
Заметьте, что в данном примере используются [try_files](http://wiki.nginx.org/NginxHttpCoreModule#try_files) и [fastcgi_split_path_info](http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_split_path_info) свойства.
[!!] Этот пример подразумевает, что Вы запускаете PHP как FastCGI сервер на порту 9000 и используете nginx v0.7.31 и выше.
Если с этой конфигурацией Вы получаете ошибки, установите для nginx уровень логов в debug и проверьте access и error логи на предмет ошибок.