Раньше я использовал linode VPS с Apache для моего веб-сайта CodeIgniter. Сегодня я установил nginx и скоро появится целевая страница моего сайта, но другие страницы, использующие htaccess для перезаписи URL, не появятся. Это мой htaccess,
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1
Чему равен nginx для моего htaccess? Также есть ли какие-либо изменения, которые мне нужно внести в мою конфигурацию и приложение codeigniter ?? ..
Для протокола URI в конфигурации codeigniter я использую,
$config['uri_protocol'] = 'PATH_INFO';
Будет ли это работать с nginx ?? ..
Поскольку у него нет эквивалента файлу .htaccess (т.е. нет файлов конфигурации на уровне каталога), вам необходимо обновить основную конфигурацию и перезагрузить nginx, чтобы любые изменения вступили в силу.
Приведенная выше конфигурация Apache по существу гласит: «Если указанный путь не является существующим файлом или каталогом, перенаправить на index.php, добавив путь».
В Nginx вы будете использовать try_files
директива для выполнения того же самого:
location / {
try_files $uri $uri/ @ci_index;
}
location @ci_index{
rewrite ^(.*) /index.php?$1 last;
}
В отличие от Apache - операторы if лучше всего избегать в конфигах Nginx.
В некоторых настройках вы можете избежать именованного индекса и перезаписи и просто использовать /index.php
как третий путь к try_files
(и codeigniter должен получить путь от $_SERVER[$config['uri_protocol']]
.
Что касается использования PATH_INFO - проверьте свой файл fastcgi_params (который вы, надеюсь, включили в свой блок местоположения php) и посмотрите:
fastcgi_param PATH_INFO $fastcgi_path_info;
Вы также можете использовать $config['uri_protocol'] = "REQUEST_URI"
Для любого выбранного вами варианта проверьте вывод print_r($_SERVER)
чтобы проверить, какие серверные переменные были установлены и на что они были установлены (они должны соответствовать тому, что вы указали в своем блоке местоположения PHP и файле fastcgi_params).
Думаю, эта ссылка поможет вам понять многое, что добавлено в точку зрения @ cyberx86. http://wiki.nginx.org/ModuleComparisonMatrix