Yii готов к работе с настроенным по умолчанию Apache. Файлы
.htaccess во фреймворке и директориях приложения ограничивают доступ к
некоторым ресурсам. Для сокрытия файла точки входа (обычно это index.php) в
URL можно добавить инструкцию для модуля mod_rewrite в файл .htaccess
в корневой директории приложения или в настройках виртуальных хостов:
RewriteEngine on
# не позволять httpd отдавать файлы, начинающиеся с точки (.htaccess, .svn, .git и прочие)
RedirectMatch 403 /\..*$
# если директория или файл существуют, использовать их напрямую
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# иначе отправлять запрос на файл index.php
RewriteRule . index.php
Yii можно использовать с веб-сервером Nginx и PHP с помощью FPM SAPI. Ниже приведён пример простой конфигурации хоста. Он определяет файл точки входа и заставляет Yii перехватывать все запросы к несуществующим файлам, что позволяет создавать человекопонятные URL-адреса.
server {
set $host_path "/www/mysite";
access_log /www/mysite/log/access.log main;
server_name mysite;
root $host_path/htdocs;
set $yii_bootstrap "index.php";
charset utf-8;
location / {
index index.html $yii_bootstrap;
try_files $uri $uri/ /$yii_bootstrap?$args;
}
location ~ ^/(protected|framework|themes/\w+/views) {
deny all;
}
# отключаем обработку запросов фреймворком к несуществующим статичным файлам
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
try_files $uri =404;
}
# передаем PHP-скрипт серверу FastCGI, прослушивающему адрес 127.0.0.1:9000
location ~ \.php {
fastcgi_split_path_info ^(.+\.php)(.*)$;
# позволяем yii перехватывать запросы к несуществующим PHP-файлам
set $fsn /$yii_bootstrap;
if (-f $document_root$fastcgi_script_name){
set $fsn $fastcgi_script_name;
}
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fsn;
# PATH_INFO и PATH_TRANSLATED могут быть опущены, но стандарт RFC 3875 определяет для CGI
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fsn;
}
# не позволять nginx отдавать файлы, начинающиеся с точки (.htaccess, .svn, .git и прочие)
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
}
Используя данную конфигурацию, можно в файле php.ini установить опцию cgi.fix_pathinfo=0 во избежание множества нежелательных системных вызовов stat().
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.