Моя проблема кажется тривиальной, но после нескольких часов тестирования, исследований и возни я не могу заставить эту простую функцию перезаписи nginx работать.
Нам нужно несколько перезаписей, некоторые из них будут иметь несколько параметров, но я даже не могу заставить этот простой текущий URL-адрес с одним параметром вообще изменить на желаемый.
Текущий: website.com/public/viewpost.php?id=post-title
Желательно: website.com/public/post/post-title
Может ли кто-нибудь любезно указать мне на то, что я сделал неправильно, я сбит с толку / очень устал ...
В целях тестирования перед запуском мы просто использовали простой порт на сервере. Вот этот раздел.
# Listen on port 7774 for dev test
server {
listen 7774;
server_name localhost;
root /usr/share/nginx/html/paa;
index index.php home.php index.html index.htm /public/index.php;
location ~* /uploads/.*\.php$ {
if ($request_uri ~* (^\/|\.jpg|\.png|\.gif)$ ) {
break;
}
return 444;
}
location ~ \.php$ {
try_files $uri @rewrite =404;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_pass php5-fpm-sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location @rewrite {
rewrite ^/viewpost.php$ /post/$arg_id? permanent;
}
}
Я пробовал бесчисленное количество попыток, таких как @rewrite выше и проще:
location / {
rewrite ^/post/(.*)$ /viewpost.php?id=$1 last;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_pass php5-fpm-sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Кажется, я вообще ничего не могу заставить работать, я пытался изменить местоположение, попробовал несколько правил ...
Скажите, пожалуйста, что я сделал не так.
[перемещен из переполнения стека согласно предложению мода]
Во втором коде замените местоположение на:
location /public/post/ {
rewrite ^/public/post/(.+) /public/viewpost.php?id=$1;
}