2015-01-06 4 views
1

Я использую Winginx для использования nginx php и mysql в окнах. я хочу работать и конфигурации CodeIgniter 2.nginx rewrite rules codeigniter

Winginx структура:

d:\winginx| 
    nginx.exe 
    php5\php.exe 
    mysql\mysqld.exe 
    \home\localhost\public_html\codeigniter 

база этого (http://wiki.nginx.org/Codeigniter)

и это (http://www.farinspace.com/codeigniter-nginx-rewrite-rules/)

и это (Nginx rewrite rule for CodeIgniter)

Я пытаюсь coonfig ci, но я просто вижу страницу codeigniter 404 (нет страницы nginx 404)

мой CI config.php является

$config['base_url'] = ""; 
$config['index_page'] = ""; 
$config['uri_protocol'] = "AUTO"; 
.. 

nginx.config является

#user nobody; 
worker_processes 1; 

#error_log logs/error.log; 
#error_log logs/error.log notice; 
#error_log logs/error.log info; 

pid  temp/nginx.pid; 


events { 
    worker_connections 1024; 
} 


http { 
    include  mime.types; 
    default_type application/octet-stream; 

    log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
         '$status $body_bytes_sent "$http_referer" ' 
         '"$http_user_agent" "$http_x_forwarded_for"'; 

    #access_log logs/access.log main; 

    sendfile  on; 
    #tcp_nopush  on; 

    #keepalive_timeout 0; 
    keepalive_timeout 65; 

    client_max_body_size 55m; 

    #gzip on; 

    scgi_temp_path temp/uwsgi_temp 1 2; 
    uwsgi_temp_path temp/uwsgi_temp 1 2; 

    fastcgi_connect_timeout 1; 

    include codeigniter.conf; 
} 

я включаю codeigniter.conf в nginx.conf codeigniter.conf является:

server { 
     listen  80; 
     server_name localhost; 
     root home/localhost/public_html/codeigniter: 
     autoindex on; 
     index index.php; 

     location/{ 

      try_files $uri $uri/ /index.php?/$request_uri; 

      location = /index.php{ 

       fastcgi_pass localhost:9000; 
       #fastcgi_split_path_info  ^(.+\.php)(.*)$; 
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
       #fastcgi_param PATH_INFO  $fastcgi_path_info; 
       include fastcgi_params; 
      } 
     } 

     location ~ \.php$ { 
      return 444; 
     } 


} 

Я попробую 3 разных coonfig ci, но я просто вижу страницу codeigniter 404 (нет страницы nginx 404).

http://localhost/codeigniter/welcome/index -> CI 404 page! 
http://localhost/codeigniter/welcome -> CI 404 page! 
http://localhost/codeigniter -> CI 404 page! 

я гость проблема создается местоположение файла PHP в codeigniter.conf

, пожалуйста, помогите мне сконфигурировать его!

ответ

0

Я хотел бы попробовать это

server { 
    listen  80; 
    server_name localhost; 
    root home/localhost/public_html/codeigniter; 
    autoindex on; 
    index index.php; 

    location/{ 
     try_files $uri $uri/ /index.php; 
    } 

    location = /index.php { 
     fastcgi_pass localhost:9000; 
     #fastcgi_split_path_info  ^(.+\.php)(.*)$; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     #fastcgi_param PATH_INFO  $fastcgi_path_info; 
     include fastcgi_params; 
    } 

    location ~ \.php$ { 
     return 444; 
    } 
} 

Вот что я использую для производства CI установки

server 
{ 
    listen 80 default_server; 
    server_name www.site.com; 

    root /var/www; 
    index index.php; 

    # canonicalize codeigniter url end points 
    location ~ ^/index.php/(.*[^/])$ { return 301 $scheme://$host/$1/$is_args$args; } 
    location ~ ^/index.php/(.*)/$ { return 301 $scheme://$host/$1/$is_args$args; } 

    location/{ 
     # Check if a file or directory index file exists, else route it to index.php. 
     try_files $uri $uri/ /index.php; 
    } 



    location ~ \.php$ 
    { 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include fastcgi_params; 
    } 
} 
+0

также сделать убедитесь, что ваше приложение/config/routes.php правильно обрабатывает запросы. –

+0

мое приложение/config/routes.php: $ route ['default_controller'] = "welcome"; $ route ['404_override'] = ""; Значение по умолчанию. – Sina

+0

Использование PHP 7.1.5 Мне просто нужно было изменить порт fastcgi_pass с _9000_ на _9071_ для того, чтобы избежать ** 504 Gateway Time-out **. Я также добавил '/' перед $ fastcgi, поскольку [Winginx] (https://winginx.com) по умолчанию: '$ document_root/$ fastcgi_script_name'. Я оставил CI '$ config ['index_page'] = 'index.php';' как есть и изменил '$ config ['base_url'] = '/';' (добавлен '/'). Все маршруты работают сейчас, даже с '404_override'. – CPHPython

0

Я получил это работает следующим образом ...

server { 
     listen 127.0.0.1:80; 
     server_name xxxx www.xxxx; 
     root home/xxxx/public_html; 
     autoindex on; 
     index index.php; 

     location/{ 

      try_files $uri $uri/ /index.php?/$request_uri; 

      location ~ \.php$ { 
     if (!-e $document_root$document_uri){return 404;} 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include fastcgi_params; 
      } 

     } 

     location ~ \.php$ { 
      return 444; 
     } 


}