2016-11-28 4 views
0

Я установил ubuntu, php5.6, nGinx на сервер, и я развернул несколько проектов под моим веб-сайтом. Один проект мне нужно развернуть в директории разработан в CodeIgniter и я настроил конфигурацию Nginx следующим образом:Как включить переписывание URL в Ubuntu, nGinx и codeigniter?

location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ { 
       expires max; 
       log_not_found off; 
     } 

     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 unix:/run/php/php5.6-fpm.sock; 
       include fastcgi.conf; 
       fastcgi_split_path_info ^(.+\.php)(.*)$; 
       include fastcgi_params; 
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     } 
     # deny access to .htaccess files, if Apache's document root 
     # concurs with nginx's one 
     # 
     location ~ /\.ht { 
       deny all; 
     } 

URL-адрес не говорят 404 сейчас, но она показывает главную страницу моего сайта после того, как URL переписать. Как я могу это исправить?

+0

Вы настроили свой разъем? – edlee

+0

Я не уверен, что понимаю ваш вопрос. Правильно ли вы настроили свой сокет, можете ли вы перейти на информационную страницу PHP? Что не работает в подкаталоге или сайте Codeignite? – edlee

ответ

0

На самом деле, я исправил проблему. Проблема заключалась в том, чтобы изменить fastcgi_param, и он работал нормально. Спасибо @edlee

location /6 { 
       alias /var/www/html/6/; 
       try_files $uri $uri/ /6/index.php; 
     } 



     location ~* \.php$ { 
       fastcgi_pass unix:/run/php/php5.6-fpm.sock; 
       root /var/www/html/; 
       try_files $uri =404; 
       fastcgi_index index.php; 
       fastcgi_param SCRIPT_FILENAME $request_filename; 
       include fastcgi_params; 
       fastcgi_buffer_size 128k; 
       fastcgi_buffers 256 4k; 
       fastcgi_busy_buffers_size 256k; 
       fastcgi_temp_file_write_size 256k; 
     } 
1

Если я правильно понял ваш вопрос.

Один из подходов - запустить PHP по всему миру через корень вашего веб-каталога. После этого вы можете указать, какие файлы будут принимать каждое местоположение. Поэтому, если вам нужно изолировать PHP только от подкаталога, вы можете изменить файлы, разрешенные для каталога.

index index.html index.htm 

Пример Nginx конфигурации с поддиректории:

server { 
    listen 80; 
    server_name mysite.com www.mysite.com; 

    root /path/to/your/website.com/; 

    index index.html index.htm 

    error_log log/error.log; 

    # set expiration of assets to MAX for caching 
    location ~* .(ico|css|js|gif|jpe?g|png)(?[0-9]+)?$ { 
     expires max; 
     log_not_found off; 
    } 

    # main codeigniter rewrite rule or sub-directory 

    location /codeigniter { 
     alias /path/to/your/website.com/codeigniter/; 
     try_files $uri $uri/ /index.php; 
    } 

    # php parsing 
    location ~ .php$ { 
     root   /path/to/your/website.com/; 
     try_files $uri =404; 
     fastcgi_pass unix:/tmp/php5-fpm.sock; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include  fastcgi_params; 
     fastcgi_buffer_size 128k; 
     fastcgi_buffers 256 4k; 
     fastcgi_busy_buffers_size 256k; 
     fastcgi_temp_file_write_size 256k; 
    } 
} 

Я не пользователь Codeigniter, так что я не могу разделить конфиг для PHP. Но местоположение должно быть указано для подкаталога. Этот пост Stack покажет вам, как это сделать here.

Другим подходом было бы выделение PHP в подкаталог. Подобно вышесказанному, только изменить эту строку

# php parsing 
location ~ /codeigniter/.+\.php$ 

Это сообщение имеет полный пример для этого approach.

+0

Спасибо @edlee На самом деле сайт уже работает нормально, но не на сайте codeigniter. Когда я вхожу на сайт, вы видите корневую страницу домена. например. example.com/123/ после входа в систему url становится example.com/123/login/dashboard/, но он показывает содержимое example.com/ – vishgarg

+0

Я пробовал вашу конфигурацию, но я все равно получаю тот же контент. – vishgarg

+0

N.P. Просто уточнить - поэтому после входа он перенаправляет вас в корень вашего веб-каталога? Поэтому вы бы хотели, чтобы example.com/ был example.com/123/? – edlee