Cakephp 3 NGINX URL重写问题

时间:2015-09-19 23:44:29

标签: cakephp nginx cakephp-3.0

我正在尝试在Linux服务器CentOS 7 OS上设置CakePHP 3。我使用composer创建了一个项目,所有内容都以正确的权限正确安装。在我的虚拟主机文件中,我根据official document

配置了配置文件
server {
      listen      80;
      server_name remote.inodd.com;
      ## redirect http to https ##
      rewrite 301 https://$server_name$request_uri permanent;
      #rewrite  301 https://$server_name$request_uri permanent;
}

server {
#    listen       80;
    listen       443 ssl;
    server_name  remote.inodd.com;
    ssl_certificate /home/vhost/www/domain/ssl/self-ssl.crt;
    ssl_certificate_key /home/vhost/www/domain/ssl/self-ssl.key;

    # note that these lines are originally from the "location /" block
    root   /home/vhost/www/domain/public_html;
    index index.php;
    access_log /home/vhost/www/domain/logs/access_log;
    error_log /home/vhost/www/domain/logs/error_log;

    location / {
        #try_files $uri $uri/ =404;
        try_files $uri $uri/ /index.php?url=$request_uri;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

所以当我浏览网址https://remote.inodd.com/development/时,我会看到显示cakephp配置状态的默认登录页面。一切都检查正常甚至数据库连接。但我得到的警告是重写没有正确配置。

您的服务器上未正确配置网址重写。

1)帮我配置

2)我不/不能使用URL重写

我不知道我在这里缺少什么,因为我能够设置非cakephp网站并且它们工作正常。

1 个答案:

答案 0 :(得分:0)

如果您的域在vhost中有conf文件,请将此行添加到您的vhost domain.conf文件中。

location / {
    try_files $uri $uri/ /index.php?$uri&$args;
    rewrite ^/$ /app/webroot/ break;
    rewrite ^(.*)$ /app/webroot/$1 break;

}
location /app/ {
    rewrite ^/$ /webroot/ break;
    rewrite ^(.*)$ /webroot/$1 break;
}
location /app/webroot/ {
    if (!-e $request_filename){
    rewrite ^(.*)$ /index.php break;
    }
}   

主要问题是cakephp有3种不同的htaccess, 首先是项目的主要目录 第二个是在app文件夹中 第三是webroot文件夹。 所以我们必须处理所有这些。我找到了这样的解决方案。