Назад | Перейти на главную страницу

Что эквивалентно 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 ?? ..

Поскольку у него нет эквивалента файлу .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