Что такое nginx для моего htaccess mod_rewrite?
Ранее я использовал 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??..
2 ответа
Поскольку не имеет эквивалента файлу.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