Configure Apache and Nginx to implement URL beautification of the Yii Framework 1. Apache
Yii has been configured and deployed by default on the Apache server. In the Yii Framework and application folder.htaccess
? The file strictly controls access to restricted resources. if you want to hide the entry script in the URL (usually?index.php
Can be added to the. htaccess file under the application root directory?mod_rewrite
? Function, or configure a VM to beautify the URL:
RewriteEngine on# prevent httpd from serving dotfiles (.htaccess, .svn, .git, etc.)RedirectMatch 403 /\..*$# if a directory or a file exists, use it directlyRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-d# otherwise forward it to index.phpRewriteRule . index.php
2. Nginx
Here is a simple Nginx configuration example, which defines the startup file and allows yii to obtain all non-existent file requests, so as to beautify the 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; } #avoid processing of calls to unexisting static files by yii location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { try_files $uri =404; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php { fastcgi_split_path_info ^(.+\.php)(.*)$; #let yii catch the calls to unexising PHP files 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 and PATH_TRANSLATED can be omitted, but RFC 3875 specifies them for CGI fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fsn; } # prevent nginx from serving dotfiles (.htaccess, .svn, .git, etc.) location ~ /\. { deny all; access_log off; log_not_found off; }}
Can you set this configuration in php. ini?cgi.fix_pathinfo=0
? To avoid many unnecessary system stat () calls.