编辑一:我也在 Windows 7 上用 apache 测试过这个,并且发生了完全相同的事情。这意味着问题主要是所有页面到主页的路由。
编辑二:根据#yii IRC 频道中的建议,我将 .htaccess 文件的内容替换为工作项目中经过简化的文件。然而,这并没有对问题产生任何改变。
编辑三:通过对我的代码进行一些更改,我现在可以正常工作了。下面回答
我一直在尝试导入一个使用 Yii 框架编写的站点,该站点已导入到我的工作站。我遇到了一个问题,即尝试加载任何页面只会直接到主页。这意味着所有请求基本上都完全按照我加载根请求的方式进行路由。访问日志或错误日志中没有弹出错误;nginx 的访问日志中的请求如下所示,其中“example”是“localhost”、“127.0.0.1”或服务器的 IP 地址:
Accessing root ( http://example/ ):
127.0.0.1 - - [08/May/2013:13:05:28 -0700]
"GET / HTTP/1.1" 200 8436 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/20.0"
Accessing login ( http://example/site/login ):
127.0.0.1 - - [08/May/2013:13:07:01 -0700]
"GET /site/login HTTP/1.1" 200 8427 "http://example/" "Mozilla/5.0 (X11; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/20.0"
Accessing the same controller by http://example/index.php?r=site/login:
127.0.0.1 - - [08/May/2013:14:40:45 -0700]
"GET /index.php?r=site/login HTTP/1.1" 200 8419 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/20.0"
考虑到我设置了其他 2 个运行良好的 Yii 项目,它们使用的服务器配置类似于我将在下面粘贴的服务器配置,我认为这可能是我应用程序本身的工作方式我还不热衷。如果有人对我可以分享、尝试或比较我从其他网站导入的工作项目中的任何其他内容有任何建议,将不胜感激:)
编辑:切换到更接近我实际使用的配置。考虑到该项目在 Windows 上的 Apache 中运行时存在相同的问题,这可能无关紧要。
server {
server_name localhost;
listen 80;
keepalive_timeout 70;
root /usr/www/[project name omitted]/public_html;
client_max_body_size 4M;
client_body_buffer_size 4M;
client_header_buffer_size 4M;
location / {
try_files $uri $uri/ /index.php?$args;
autoindex on;
}
location ^~ /data/ {
expires 30d;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
#Disable logging for favicon
location = /favicon.ico {
log_not_found off;
access_log off;
}
#Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ /themes/\w+/views {
deny all;
access_log off;
log_not_found off;
}
# Pass all .php files onto a php-fpm/php-fcgi server.
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
try_files $uri =404;
#fastcgi_intercept_errors on;
#fastcgi_connect_timeout 20;
fastcgi_send_timeout 20;
fastcgi_read_timeout 600; # For xdebug to work alright
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
}