Переписать реврайты под Nginx

12
B
На сайте с 03.08.2007
Offline
82
3257

Друзья,

.htaccess лежал в http://site.ru/forums, и делал редиректы, соответственно, для директории forums.

RewriteRule ^index.htm index.php?%{QUERY_STRING}

RewriteRule ^index.html index.php?%{QUERY_STRING}
RewriteRule ^main.html index.php?act=idx&%{QUERY_STRING}
RewriteRule ^ipb.html index.php?%{QUERY_STRING}
RewriteRule ^topic([0-9]+)\.html$ index.php?showtopic=$1&%{QUERY_STRING}
RewriteRule ^topic([0-9]+)s([0-9]+)\.html$ index.php?showtopic=$1&st=$2&%{QUERY_STRING}
RewriteRule ^forum([0-9]+)\.html$ index.php?showforum=$1&%{QUERY_STRING}
RewriteRule ^cat([0-9]+)\.html$ index.php?act=SC&c=$1&%{QUERY_STRING}
RewriteRule ^ptopic([0-9]+)\.html$ index.php?act=Print&client=printer&f=1&t=$1&%{QUERY_STRING}
RewriteRule ^user([0-9]+)\.html$ index.php?showuser=$1&%{QUERY_STRING}

Я воспользовался инструментом https://winginx.com/ru/htaccess для конвертирования правил под Nginx, и получил следующее:

# nginx configuration

location /index {
rewrite ^/index.htm /index.php?$query_string;
rewrite ^/index.html /index.php?$query_string;
}
location /main {
rewrite ^/main.html /index.php?act=idx&$query_string;
}
location /ipb {
rewrite ^/ipb.html /index.php?$query_string;
}
location /topic {
rewrite ^/topic([0-9]+)\.html$ /index.php?showtopic=$1&$query_string;
rewrite ^/topic([0-9]+)s([0-9]+)\.html$ /index.php?showtopic=$1&st=$2&$query_string;
}
location /forum {
rewrite ^/forum([0-9]+)\.html$ /index.php?showforum=$1&$query_string;
}
location /cat {
rewrite ^/cat([0-9]+)\.html$ /index.php?act=SC&c=$1&$query_string;
}
location /ptopic {
rewrite ^/ptopic([0-9]+)\.html$ /index.php?act=Print&client=printer&f=1&t=$1&$query_string;
}
location /user {
rewrite ^/user([0-9]+)\.html$ /index.php?showuser=$1&$query_string;
}

Но такое не работает. Наверно, потому что не указана директория forums или еще что-то...

Помогите, пожалуйста, переписать корректно правила от Apache для Nginx.

S
На сайте с 17.08.2008
Offline
114
#1
Наверно, потому что не указана директория forums или еще что-то...

пробуйте значит как-то так

location /forums/index {

rewrite ^/forums/index.htm /forums/index.php?$query_string;

rewrite ^/forums/index.html /forums/index.php?$query_string;

}

и так далее...

( хотя конечно, такой локейшин выглядит криво - location /forums/index)

KB
На сайте с 10.08.2006
Offline
164
KGB
#2

Лень выпиливать, просто приведу пример куска своего конфига. Надо только учесть, что у меня еще изменения с forum на forums были


location / {

------------------

##forum
location ~ /forum/lofiversion/(.*)$ {
rewrite ^/forum/lofiversion/(.*)$ /lofiversion/$1 permanent;
}
location ~ /forums/index.php(.*)$ {
rewrite ^/forums/index.php(.*)$ /$1 permanent;
}
location ~ /forum/index.php(.*)$ {
rewrite ^/forum/index.php(.*)$ /$1 permanent;
}
location ~ /forum/forum/(.*)$ {
rewrite ^/forum/forum/(.*)$ /forums/$1 permanent;
}
location ~ /forums/forums/(.*)$ {
rewrite ^/forums/forums/(.*)$ /forums/$1 permanent;
}
location ~ /forums/ipb.html(.*)$ {
rewrite ^/forums/ipb\.html(.*)$ /forums/$1 permanent;
}
location ~ /forum/ipb.html(.*)$ {
rewrite ^/forum/ipb\.html(.*)$ /forums/$1 permanent;
}
location ~ /forums/main.html$ {
rewrite ^/forums/main.html$ /forums/ permanent;
}
location ~ /forum/main.html$ {
rewrite ^/forum/main.html$ /forums/ permanent;
}
location ~ /forum/topic([0-9]+)\.html$ {
rewrite ^/forum/topic([0-9]+).html$ /index.php?showtopic=$1 permanent;
}
location ~ /forums/topic([0-9]+)\.html$ {
rewrite ^/forums/topic([0-9]+).html$ /index.php?showtopic=$1 permanent;
}
location ~ /forum/ptopic([0-9]+)\.html$ {
rewrite ^/forum/ptopic([0-9]+).html$ /index.php?showtopic=$1 permanent;
}
location ~ /forums/ptopic([0-9]+)\.html$ {
rewrite ^/forums/ptopic([0-9]+).html$ /index.php?showtopic=$1 permanent;
}
location ~ /forum/topic([0-9]+)s([0-9]+).html$ {
rewrite ^/forum/topic([0-9]+)s([0-9]+)\.html$ /index.php?showtopic=$1&st=$2 permanent;
}
location ~ /forums/topic([0-9]+)s([0-9]+).html$ {
rewrite ^/forums/topic([0-9]+)s([0-9]+)\.html$ /index.php?showtopic=$1&st=$2 permanent;
}
location ~ /forum/ptopic([0-9]+)s([0-9]+).html$ {
rewrite ^/forum/ptopic([0-9]+)s([0-9]+)\.html$ /index.php?showtopic=$1&st=$2 permanent;
}
location ~ /forums/ptopic([0-9]+)s([0-9]+).html$ {
rewrite ^/forums/ptopic([0-9]+)s([0-9]+)\.html$ /index.php?showtopic=$1&st=$2 permanent;
}
location ~ /forum/forum([0-9]+).html$ {
rewrite ^/forum/forum([0-9]+)\.html$ /index.php?showforum=$1 permanent;
}
location ~ /forums/forum([0-9]+).html$ {
rewrite ^/forums/forum([0-9]+)\.html$ /index.php?showforum=$1 permanent;
}
location ~ /forum/user([0-9]+).html$ {
rewrite ^/forum/user([0-9]+)\.html$ /index.php?showuser=$1 permanent;
}
location ~ /forums/user([0-9]+).html$ {
rewrite ^/forums/user([0-9]+)\.html$ /index.php?showuser=$1 permanent;
}
location ~ /forum/(.*)$ {
rewrite ^/forum/(.*)$ /forums/$1 permanent;
}
##


--------------------------

}
J
На сайте с 20.02.2014
Offline
120
jkm
#3


location /forums/ {
rewrite ^/forums/ipb\.html /forums/index.php;
rewrite ^/forums/index\.html? /forums/index.php;
rewrite ^/forums/main\.html /forums/index.php?act=idx;
rewrite ^/forums/topic([0-9]+)\.html$ /forums/index.php?showtopic=$1;
rewrite ^/forums/topic([0-9]+)s([0-9]+)\.html$ /forums/index.php?showtopic=$1&st=$2;
rewrite ^/forums/forum([0-9]+)\.html$ /forums/index.php?showforum=$1;
rewrite ^/forums/cat([0-9]+)\.html$ /forums/index.php?act=SC&c=$1;
rewrite ^/forums/ptopic([0-9]+)\.html$ /forums/index.php?act=Print&client=printer&f=1&t=$1;
rewrite ^/forums/user([0-9]+)\.html$ /forums/index.php?showuser=$1;

location ~ \.php$ {
# А тут уже ставим свой fastcgi_pass
}
}
B
На сайте с 03.08.2007
Offline
82
#4

Всем спасибо, все получилось.

V6
На сайте с 15.09.2022
Offline
0
#5

Читал, читал, так и не вьехал,  сайт старый, сервер перехал на nginx + php-fpm, побилось очень много ссылок в инете и базе,  на Апаче ридерект работал, для nginx сам не смог, помогите написать для nginx

Образец:

https://sait.ru/forum/topic/32055/  ----->   https://sait.ru/forums/topic/32055/

https://sait.ru/forum/forum/66/  -------->   https://sait.ru/forums/forum/66/


Артём Ломакин
На сайте с 16.09.2020
Offline
30
#6
htaccess-конвертер для nginx
  • winginx.com
Сервис предназначен для перевода конфигурационного файла Apache .htaccess в инструкции конфигурационного файла nginx. В первую очередь, сервис задумывался как переводчик инструкций mod_rewrite с htaccess на nginx. Однако, он позволяет переводить другие инструкции, которые можно и резонно перевести из Apache в nginx. Инструкции, не...
V6
На сайте с 15.09.2022
Offline
0
#7
Артём Ломакин #:
https://winginx.com/ru/htaccess

Пробовал я этот конвертер, не помог.

SR
На сайте с 07.07.2004
Offline
497
#8

в nginx надо в правильное место вставить список редиректов, в какое не знаю:) оставил на апаче сервер:) ибо если вы вносите изменения в файл нгинс, то он перестает работать из панели управления, не важно какой ispmanager или fastpanel, далее вам надо будет, если файл большой, через фтп править этот файл, ибо файл менеджер в isp имеет ограничения по объему открытия файлу и через ssh делать релоад nginx при каждом изменении файла. Т.е. при любом изменении целая карусель действий... В isp еще на этом завязаны все настройки сайта и при отличном от дефолта конфиге nginx он не дает сохранить эти настройки...

Если речь идет о VDS с FastPsnel, то проще оставить Apache, с использованием NGINX для статичных файлов

V6
На сайте с 15.09.2022
Offline
0
#9
SSA.RU #:
Если речь идет о VDS с FastPsnel, то проще оставить Apache, с использованием NGINX для статичных файлов

Пробовал, глючит она, открывается только первая страница а дальше везде ошибка "Страница не найдена" я понимаю что что то с настройками но если бы я был спец я бы эту панель не ставил.

SR
На сайте с 07.07.2004
Offline
497
#10
vladkv61 #:
Пробовал, глючит она, открывается только первая страница а дальше везде ошибка "Страница не найдена" я понимаю что что то с настройками но если бы я был спец я бы эту панель не ставил.

я так думаю, это не связано с панелью:) Друпал у меня на ISP не заработал по дефолту, так же только главная страница, я с isp и нгинсом измумукался по полной, дефолтный конфиг 100% не будет работать, именно с обработкой адресов проблемы, ответов  в сети по конфигу, чтобы вот раз и заработало нет, будешь сидеть каждый раз передергивать нгинс...  У меня при переезде сайта на другу CMS, было в районе 40к редиректов, файл конфига я мог гонять только по фтп туда сюда и далее по ssh релоад этого нгинса. Тем более если у вас несколько сайтов, да они еще на разных CMS. Я не знаю, Fastpanel у меня все по дефолту заработало, ничего не трогал. Кстати у этой панели бесплатная супер поддержка, прям вот реально поддержка, оперативно все , по делу, не реклама:) рекламировать там нечего, все бесплатно. Есть косяки, могу вот прям сразу сказать, файловый менеджер какой то недоделанный, невозможно скопировать несколько папок, папки плюс файлы и тп. Постоянно чето не докопируется, особенно если большие объемы.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий