Что такое 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

Другие вопросы по тегам