как использовать вывод преобразования правил перезаписи htaccess в правила перезаписи nginx

1

Я использую neginx, тогда мне нужно преобразовать правила перезаписи htaccess в правила перезаписи neginx. Я использовал это для преобразования. Теперь я хочу знать, как использовать вывод?

.htaccess:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA]

ErrorDocument 404 /error404.html

Правила nginx: (выход)

if (!-f $request_filename){
    set $rule_0 1$rule_0;
}
if (!-d $request_filename){
    set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
    rewrite ^/(.*)$ /index.php?rt=$1 last;
}

как я должен использовать вывод?

Следует отметить, что у меня есть несколько.htaccess в разных папках (3 файла.htaccess в 3 разных папках)

Теги:
nginx
.htaccess
webserver

1 ответ

1
Лучший ответ

В nginx нет такой вещи, как файл htaccess. Все ваши правила nginx должны идти непосредственно в файл конфигурации nginx.

См.: http://nginx.org/en/docs/beginners_guide.html#conf_structure

Что вам нужно сделать, потому что ваши файлы htaccess находятся в разных папках, вам необходимо обернуть правила в блоках location.

Например, если правила, которые вы опубликовали, были переведены из файла htaccess в папку "blogs", вы должны сделать следующее:

location /blogs/ {

    if (!-f $request_filename){
        set $rule_0 1$rule_0;
    }
    if (!-d $request_filename){
        set $rule_0 2$rule_0;
    }
    if ($rule_0 = "21"){
        rewrite ^/(.*)$ /index.php?rt=$1 last;
    }

}
  • 0
    ну, я вижу, и для других правил (из другого файла htaccess), я должен создать новое location как это: location /folder_name/ {} в файле конфигурации, верно?
  • 0
    и мой второй (наконец-то) вопрос: почему последняя строка не переведена в правилах nginx? ErrorDocument 404 /error404.html
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню