BarnyBroken
@BarnyBroken
Дизайнер, веб-разработчик.

Как правильно составить регулярку для NGINX?

Всем привет. Помогите пожалуйста с такой вот регуляркой.

rewrite ^/(ru|en)?/?(faq|news|page|catalogue|basket|photos|search|users)(.*)$ /?lang=$1&module=$2&mod_rewrite=$3 break;


В чем собственно проблема. Нужно через nginx урезать любые другие ссылки вида http:/site.com/xxx. Чтобы при попадании на все такие ссылки отправляло на 404. Это сделал. Но столкнулся с проблемой. Сайт на 2х языках.

И когда например я ввожу http:/site.com/xxx, меня перебрасывает на 404, а когда http:/site.com/en/xxx, меня никуда не перебрасывает, на главную страницу разве что.

Как сделать так, чтобы несуществующие страницы отрабатывались и через языки (en,ru) ? Заранее благодарен.
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 1
@dodo512
server {
    ...

    root /home/site/public_html;

    rewrite ^/(ru|en)?/?(faq|news|page|catalogue|basket|photos|search|users)(.*)$ /index.php?lang=$1&module=$2&mod_rewrite=$3;
    rewrite ^/$ /index.php;

    location / { }

    location ~ \.php$ {
        fastcgi_pass unix:/tmp/php-fpm7.sock;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|woff|ogg|mpe?g|avi|zip|gz|rar)$ {
        add_header Pragma public;
        add_header Cache-Control "public";
        access_log /home/site/cache.log;
        expires 1d;
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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