Пожалуйста, помогите мне преобразовать правила htaccess приложения zcart в конфигурацию nginx. См. Ниже htaccess.
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Спасибо
Предполагая, что вы уже настроили свою часть конфигурации FastCGI, давайте попробуем:
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
можно преобразовать в конфигурацию nginx как
location ~ ^(.+)/$ {
if (!-d $request_filename) {
return 301 $1;
}
# else this is a directory, will be processed via index file in this directory by default
}
или (тот же результат)
location ~ ^(.+)/$ {
if (!-d $request_filename) {
rewrite ^(.*)/$ $1 permanent;
}
# else this is a directory, will be processed via index file in this directory by default
}
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
будет обрабатываться одной директивой try_files
в основном блоке location
:
location / {
try_files $uri $uri/ /index.php;
}
И наконец,
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
не требует дополнительной конфигурации в nginx.conf
, потому что переменная $_SERVER[HTTP_AUTHORIZATION]
будет добавлена к массиву $_SERVER
автоматически, когда установлен HTTP-заголовок Authorization
(если ваша конфигурация php-fpm верна).