하위 폴더에 Nginx 다시 쓰기(404)
NGINX 서버상에 사이트 호스트가 있어, 이전에는 정상적으로 동작하고 있었습니다.index.phpnginx 사이트 구성에서 사용try_files.
하지만 이제 블로그를 추가해서 URL을 만들겠습니다.www.foo.com/blog블로그에 접속하여index.php?p=.
하지만 Nginx Helper와 함께 예쁜 퍼멀링크를 사용하면www.foo.com/blog/2013/07/bar, 나는 이해하다404.
server {
# don't forget to tell on which port this server listens
listen 80;
# listen on the www host
server_name foo.com;
# and redirect to the non-www host (declared below)
return 301 $scheme://www.ultra-case.com$request_uri;
}
server {
# listen 80 default_server deferred; # for Linux
# listen 80 default_server accept_filter=httpready; # for FreeBSD
listen 80;
# The host name to respond to
server_name www.foo.com;
# Path for static files
root /web/foo.com
#index file
index index.php;
#Specify a charset
charset utf-8;
# Custom 404 page
error_page 404 /404.html;
# Uri Rewrite
location /blog {
index index.php;
try_files $uri $uri/ /blog/index.php?$args;
}
location / {
autoindex on;
# This is cool because no php is touched for static content.
# include tihe "?$args" part so non-default permalinks doesn't break when using query string
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
# Include the component config parts for h5bp
include conf/h5bp.conf;
}
수락된 답변은 모든 것을 통과시킵니다.index.php.
이로 인해 wp-admin 스크립트를 포함한 특정 스크립트가 파손됩니다.
다음을 사용할 수 있습니다.
location /blog/ {
index index.php;
try_files $uri $uri/ /blog/index.php?$args;
}
음... 많은 의견과 답변 감사합니다.하지만 마지막으로 나는 이 방법을 사용하여 그것을 작동시킨다.
location /blog {
index index.php;
rewrite ^/blog/(.*)+$ /blog/index.php?$1; # it finally works
# return 200 $request_uri; # it is for inspect what $request_uri is
# try_files $uri $uri/ /blog/index.php$request_uri$is_args$args; # it gets 500 server error
}
현재 설정에 문제가 있으면 지적해 주세요.감사해요!
서브폴더/블로그 아래에 있는 퍼멀링크를 찾으려면 다음을 권장합니다.
location /blog {
index index.php;
try_files $uri $uri/ /blog/index.php?$args;
}
이것을 시도해 보세요. 저는 당신이 다시 쓸 때 사용하는 것과 같은 행동을 따라 하려고 대답을 바꿨습니다.
location ~ /blog(.*) {
index index.php;
try_files $uri /blog/index.php?$1&$args;
}
이거 드셔보세요
location /api {
# example: http://demo.com/api/channels/dmzb
root /data/webserver/demo.com/api/web;
rewrite ^/api/(.*) /$1 break;
try_files $uri $uri/ /api/index.php?$args;
location ~ ^/api/index\.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
# fix request_uri
set $changed_request_uri $request_uri;
if ($changed_request_uri ~ ^/api(.*)) {
set $changed_request_uri $1;
}
fastcgi_param REQUEST_URI $changed_request_uri;
# fix script_filename
fastcgi_split_path_info ^(?:\/api\/)(.+\.php)(.*);
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}
}
php를 생각해 보세요.이렇게 고쳐 쓸 필요는 없습니다.
location /app/ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /path/to/your/app/index.php;
fastcgi_pass php;
}
다음과 같은 fastcgi 패스로
upstream php {
server unix:/var/run/php5-fpm.sock;
}
루트 및 하위 폴더 레벨의 예쁜 URL을 위한 범용 솔루션:
set $virtualdir "";
set $realdir "";
if ($request_uri ~ ^/([^/]*)/.*$ ) {
set $virtualdir /$1;
}
if (-d "$document_root$virtualdir") {
set $realdir "${virtualdir}";
}
location / {
try_files $uri $uri/ $realdir/index.php?$args;
}
permalink가 유효하게 되어 있기 때문에, 여기에 기재되어 있는 양쪽의 회답의 조합이 필요하게 되었습니다.그렇지 않으면
- 리라이트만 하면 스태틱파일은 하나도 처리되지 않습니다.
- 테스트 파일만 사용해도 퍼멀링크는 작동하지 않습니다.
이건 내 셋업에서 작동하는 거야
location /blog/ {
rewrite ^/blog/(blog/(tag|category|20??)/.*)+$ /blog/index.php?$1;
try_files $uri $uri/ /blog/index.php?$args =404;
}
ip url: 123.123/xxxxxxxxxxx/
location /xxxxxxxxxx/ {
try_files $uri $uri/ /xxxxxxxxxx/index.php?$query_string;
}
# Rewrite multisite '.../wp-.*' and '.../*.php'.
if (!-e $request_filename) {
rewrite ^(/xxxxxxxxxx/.*)+(/wp-.*) /xxxxxxxxxx/$2 last;
rewrite ^(/xxxxxxxxxx/.*)+.*(/wp-admin/.*\.php)$ /xxxxxxxxxx/$2 last;
rewrite ^(/xxxxxxxxxx/.*)+(/.*\.php)$ /xxxxxxxxxx/$2 last;
}
언급URL : https://stackoverflow.com/questions/17805576/nginx-rewrite-in-subfolder-404
'programing' 카테고리의 다른 글
| 계산된 열을 사용하여 동일한 뷰에서 다른 열을 계산하는 방법 (0) | 2023.03.26 |
|---|---|
| 이 Rails JSON 인증 API(Gand 사용)는 안전한가요? (0) | 2023.03.26 |
| jq의 빈 어레이를 적절하게 삭제하는 방법 (0) | 2023.03.26 |
| docker-compose를 사용하여 mongo 데이터베이스를 시드하려면 어떻게 해야 합니까? (0) | 2023.03.26 |
| 리액트 렌더 함수로 비동기화하는 방법 (0) | 2023.03.26 |