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.