порт RewriteRule с apache на nginx

у нас есть большое приложение php, работающее на apache, которое я хотел бы перенести на nginx. У меня есть все, чтобы работать правильно, за исключением RewriteRule в файле .htaccess.

Веб-приложение позволяет пользователю хранить файлы, которые могут быть загружены публично. Файлы на сервере можно найти в корневом веб-каталоге в папке их учетной записи, которая является их доменным именем без субдомена и расширения домена. Итак, для домена subdomain1.domain2.com accountname = domain2

/files/{account}

Некоторые примеры:

/files/domain1/
/files/domain2/
/files/domain3/

Однако мы хотим, чтобы URL-адреса были вроде https://subdomain1.domain1.com/files/file.pdf вместо https://subdomain1.domain1.com/files/account/file.pdf

Это RewriteRule, которое работает на apache.

RewriteCond %{HTTP_HOST} [www\.|subdomain1\.|subdomain2\.]? 
(domain1|domain2|domain3).(com|nl|org)+
RewriteCond %{REQUEST_URI} !files/(domain1|domain2|domain3)+\/
RewriteRule files/(.*) files/%1/$1 [L]

Однако попытка перенести его на nginx вызывает у меня головную боль. Я пробовал доступные варианты здесь ( https://www.nginx.com/blog/creating-nginx-rewrite-rules/ ), но ничего не работает так, как я хочу.

Кто-нибудь знает, как это сделать?

0
задан 20 June 2018 в 16:42
1 ответ

Надеюсь, вы знаете, что nginx не поддерживает .htaccess, поэтому добавьте это в свою конфигурацию:

server {
        listen 80 ; 
        server_name ~^(www|subdomain(1|2))\.(?<domain>domain(1|2|3))\.(com|nl|org)$;

        location ~ ^/files/domain(1|2|3)/ {
        }

        location / {
          rewrite /files/(.*)$ /files/$domain/$1 last;
        }       

}
0
ответ дан 5 December 2019 в 05:50

Теги

Похожие вопросы