-
去掉 Url 中的 ?r= 和index.php (也就是隐藏url) Apache 服务器
找到配置文件 基础应用 (config->web.php) 'urlManager' => [ // URL管理器 'enablePrettyUrl' => true, // 美化URL 把 ? 好 r去掉了 'showScriptName' => false, // 指定是否在URL在保留入口脚本 index.php 'rules' => [ ], ],//被注释掉了 打开就行 同时还要在index.php同级目录下新建.htaccess文件 //表示重写引擎开 RewriteEngine on //请求的文件或路径是不存在的,如果文件或路径存在将返回已经存在的文件或路径 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php 3、.htaccess文件解释 概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。 通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、 允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
-
高级应用模块
修改 advanced/backend/config/main.php 文件如下: 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ ], ], 同样修改 advanced/frontend/config/main.php 文件: 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ ], ], 接着设置服务器, 这里先以 apache 为例. 首先设置一下虚拟主机: <VirtualHost *:80> ServerName advanced.loc ServerAlias www.advanced.loc DocumentRoot "/path/to/advanced" <Directory "/path/to/advanced"> AllowOverride All </Directory> </VirtualHost> 然后在站点根目录下创建 .htaccess 文件为: # prevent directory listings Options -Indexes # follow symbolic links Options FollowSymlinks RewriteEngine on RewriteCond %{REQUEST_URI} ^/admin/$ RewriteRule ^(admin)/$ /$1 [R=301,L] RewriteCond %{REQUEST_URI} ^/admin RewriteRule ^admin(/.+)?$ /backend/web/$1 [L,PT] RewriteCond %{REQUEST_URI} ^.*$ RewriteRule ^(.*)$ /frontend/web/$1 然后在 advanced/backend/web 目录中创建 .htaccess 文件, 内容如下: # use mod_rewrite for pretty URL support RewriteEngine on # if a directory or a file exists, use the request directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # otherwise forward the request to index.php RewriteRule . index.php 然后在 advanced/frontend/web 目录中复制一份上面的.htaccess 文件 Nginx 下的环境配置 Nginx 下的配置可能稍微复杂一些, 这里直接贴出配置, 大家请根据自己的需要进行相应的修改: server { charset utf-8; client_max_body_size 200M; listen 80; ## listen for ipv4 #listen [::]:80 default_server ipv6only=on; ## listen for ipv6 server_name advanced.loc; root /path/to/advanced; access_log /path/to/logs/advanced.access.log main buffer=50k; error_log /path/to/logs/advanced.error.log warn; location / { root /path/to/advanced/frontend/web; try_files $uri /frontend/web/index.php?$args; # avoiding processing of calls to non-existing static files by Yii location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { access_log off; expires 360d; try_files $uri =404; } } location /admin { alias /path/to/advanced/backend/web; rewrite ^(/admin)/$ $1 permanent; try_files $uri /backend/web/index.php?$args; } # avoiding processing of calls to non-existing static files by Yii location ~ ^/admin/(.+\.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar))$ { access_log off; expires 360d; rewrite ^/admin/(.+)$ /backend/web/$1 break; rewrite ^/admin/(.+)/(.+)$ /backend/web/$1/$2 break; try_files $uri =404; } location ~ \.php$ { include fastcgi_params; # check your /etc/php5/fpm/pool.d/www.conf to see if PHP-FPM is listening on a socket or port fastcgi_pass unix:/var/run/php5-fpm.sock; ## listen for socket #fastcgi_pass 127.0.0.1:9000; ## listen for port fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; try_files $uri =404; } #error_page 404 /404.html; location = /requirements.php { deny all; } location ~ \.(ht|svn|git) { deny all; } }