Nginx在子目录中配置Joomla和Codeigniter

ran*_*ika 6 joomla codeigniter nginx

以下nginx配置似乎无法正常工作,并404在访问时返回错误http://example.com/xml_apps/- 但是joomla网站可以从根网址正常工作http://example.com

更新 看起来请求现在发送到codeigniter应用程序,因为404错误来自CI应用程序.

http://example.com/xml_apps/index.php/xmlengine/jmprovince?category=1&count=10
Run Code Online (Sandbox Code Playgroud)

我们是否需要某种配置来添加codeigniter级别?让控制器/动作工作.

server {
    listen   80;
    root /home/ubuntu/websites/example.com/public_html;
    index index.html index.htm index.php;
    server_name example.com;
location / {
    try_files $uri $uri/ /index.php;
}
location /xml_apps/ {
    if ($request_uri ~ "^system.*"){
        rewrite ^/xml_apps/(.*)$ /xml_apps/index.php?/$1 last;
    }
    if (!-e $request_filename){
        rewrite ^/xml_apps/(.*)$ /xml_apps/index.php?/$1 last;
    }
}
location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    fastcgi_hide_header X-Powered-By;
    fastcgi_param  REQUEST_URI      $request_uri;
    fastcgi_param  QUERY_STRING     $query_string;
    fastcgi_param  REQUEST_METHOD   $request_method;
    fastcgi_param  CONTENT_TYPE     $content_type;
    fastcgi_param  CONTENT_LENGTH   $content_length;
}
}
Run Code Online (Sandbox Code Playgroud)

Kys*_*lik 1

至于CodeIgniter级别设置,请编辑application/config/config.php文件(也请阅读config.php中的注释)

$config['base_url'] = 'http://example.com/xml_apps';
Run Code Online (Sandbox Code Playgroud)

如果您想要漂亮的网址,请也应用下面的代码

$config['index_page'] = '';
Run Code Online (Sandbox Code Playgroud)

至于 Nginx 设置,请访问Nginx 社区- 那里都有很好的解释。

编辑

更改 nginx 设置

# removes access to "system" folder, also allows a "System.php" controller
if ($request_uri ~* ^/system)
{
    rewrite ^/(.*)$ /index.php?/$1 last;
    break;
}

# unless the request is for a valid file (image, js, css, etc.), send to bootstrap
if (!-e $request_filename)
{
    rewrite ^/(.*)$ /index.php?/$1 last;
    break;
}
Run Code Online (Sandbox Code Playgroud)