У меня есть ниже .htaccess
файл в apache, который перенаправляет все запросы на app/index.php
с или без GET
параметр. Я только что установил NGINX, но мое приложение не запускается. Может ли кто-нибудь помочь в воспроизведении тех же функций в NGINX? Спасибо.
RewriteEngine on
Options -Indexes
RewriteRule ^$ app/ [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ app/index.php?url=$1 [QSA,L]
Использовать модуль перезаписи. Что-то вроде этого должно сработать:
location / {
autoindex off;
rewrite ^/$ app/ last;
if (!-e $request_filename) {
rewrite ^/(.*)$ app/index.php?url=$1;
}
}
Для большей части этой конфигурации нет необходимости использовать модуль перезаписи.
Правила перезаписи apache означают:
RewriteRule ^$ app/ [L]
- отправьте URL / в каталог приложенияRewriteCond %{REQUEST_FILENAME} !-d
- если запрос не в директорииRewriteCond %{REQUEST_FILENAME} !-f
- если запрос не файлRewriteCond %{REQUEST_FILENAME} !-l
- если запрос не является символической ссылкойapp/index.php?url=$1
В nginx эквивалент:
# No automatic directory listings
autoindex off;
# Send the root url to the app dir
index index.php;
rewrite ^/$ app/ last;
# check if the url matches a file, directory and if not send to app/index.php
try_files $uri $uri/ app/index.php?url=$uri;
Проверка символической ссылки является излишней, поскольку символическая ссылка также является файлом или каталогом.