Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Nginx rewrite без редиректа решено. Теперь новая проблема..
Новая тема
Ответить
цитата
20/05/16 в 19:17
Nikso
подскажите пожалуйста как без редиректа делать, ну чтобы как в апаче работало
RewriteRule ^some.html$ someother.html [L]
пробую на нгинксе так
rewrite ^/some\.html$ /someother.html permanent;
получаю в браузере 301 редирект на someother.html
так тоже редиректит
location /some.html {
alias /someother.html;
}
Последний раз редактировалось: Nikso (
22/05/16 в 12:07
), всего редактировалось 1 раз
цитата
20/05/16 в 19:53
Stek
У меня вот так сделано:
Код:
location /JsonRpcServer {
rewrite /JsonRpcServer/(.*) /JsonRpcServer/index.php?controller=$1 last;
}
Т.е. вызывая /JsonRpcServer/payment , на сервере выполняется /JsonRpcServer/index.php?controller=payment . Никаких 301 не происходит.
Тебе как понимаю малину портит "permanent"
цитата
20/05/16 в 20:32
Diablo
а ты куда это прописываешь?
rewrite ^some.html/$ /someother.html last;
это пихнуть в include/rewrites.conf файл, который прописан в конфиге vhosts.d/domain.conf:
чет типа:
include include/rewrites.conf;
цитата
21/05/16 в 08:51
Nikso
сюда прописываю
/usr/local/etc/nginx/extra/domain.com.conf
после правки делаю рестарт service nginx restart
а вот разобрался. в синтаксисе ошибся
Так прописал и заработало
location /test {
rewrite /test.html /test2.html last;
}
ps. чего только не придумают
всем отсыпал спасибы )
цитата
21/05/16 в 12:07
Nikso
Подкажите еще друзья, а как мне с query строки часть выдрать
if ($query_string ~ ^some=(.*)$) {rewrite /test.html /test.php?thatneed=%1 last;}
$1 тоже не робит.
всю строку $query_string тоже не вариант пихать, там дальше негде будет ее разбирать и отрезать "some="
цитата
22/05/16 в 12:06
Nikso
разобрался как разобрать query.
может кому пригодится
Код:
location /tt {
if ($query_string ~ ^shit=(.*)$) {
set $param $1;
rewrite /tt.html /test.php?s=$param last;}
rewrite /tt.html /test.php last;
}
теперь другой затык. Курю мануал, и не могу найти проблему
http://nginx.org/ru/docs/http/ngx_http_rewrite_module.html
суть: Вот так все работает прекрасно.
location /tt {
rewrite /tt.html /test.php last;
}
в браузере domain.com/tt.html - выдает результат работы test.php (там простое echo "hello word")
НО!! если я захотел сделать вместо tt.html tt.php
все сразу ломается..
location /tt {
rewrite /tt.php /test.php last;
}
заголовок HTTP/1.1 404 Not Found
документ File not found.
это что за фигня то такая... просто написал php вместо html
цитата
24/05/16 в 18:39
Nikso
парни, хелп!
цитата
24/05/16 в 19:43
localhost
у меня так работает:
Код:
if ($request_uri ~* "/blog/.+$") {
rewrite /blog/(.+)$ /$1 permanent;
break;
}
или так
Код:
location ~ ^/blogposts/page/(\d+)/?$ {
rewrite ^ /index.php$args last;
break;
}
цитата
24/05/16 в 21:57
Stek
Посмотри в логе для начала, куда обращается и что не находит.
У nginx весьма замороченная система по управлению alias location rewrite. Есть приоритеты по выборке правил.
Я для себя просто пересобирал nginx с включенным debug ключом и включал его в логах. Тогда там полный отчет будет, что в каком порядке запрашивается, на что перезаписывается и что где ищется.
Т.е. может у тебя где выше в конфиге уже прошла обработка php и до твоего реврайта не доходит, так как это правило приоритетом ниже.
Новая тема
Ответить
Эта страница в полной версии