규칙 재작성 nginx

규칙 재작성 nginx

nginx에서 실행되는 내 사이트에 대한 다시 쓰기 규칙을 구성하려고 합니다. 누군가가 웹사이트에 접속하면 의 내용을 볼 수 있기를 원 mysite.com/wordpress하지만 URL은 변경되어서는 안 되며 그대로 유지되어야 합니다 mysite.com. 하지만 누군가가 액세스하면 mysite.com/some_file.php해당 파일을 볼 수 있어야 합니다. 내 위치 블록에서 301 리디렉션을 추가하면 작동하지만 일부 다시 쓰기 규칙을 추가하면 작동하지 않고 example.com에 루트 내용이 표시됩니다. 다시 쓰기 규칙을 작동시키는 방법을 제안하십시오.

이것은 작동하지만 URL이 변경되면 example.com/wordpress(원하는 결과가 아님)

location = / {
    return 301 http://example.com/wordpress;
}

이건 작동하지 않아

PHP NGINX 구성:

location = / {

    #   return 301 http://example.com/wordpress;
    # nginx configuration

    if ($http_host ~ "^(www.)example.com$"){
        rewrite ^(.*)$ /wordpress/ break;
    }
    if ($http_host ~ "^(.*).example.com"){
        rewrite ^(.*)$ http://example.com/wordpress/%1/$1 redirect;
    }
    if (!-e $request_filename){
        rewrite ^(.*)$ /wordpress/$1;
    }
    rewrite ^/(.*)index\.(php)$ http://$http_host/$1 redirect;

}
location ~ \.php$ {
    try_files $uri =404;
    include fastcgi_params;
    fastcgi_pass php;
}

답변1

추가하여 이 문제를 해결했습니다.

try_files $uri $uri/wordpress /wordpress/index.php?$args;

다른 모든 재작성 규칙을 위치/차단하고 제거합니다. 그것이 하는 일은 먼저 파일을 요청한 다음 /wordpress 하위 폴더, 하위 폴더의 index.php를 요청하는 것입니다.

관련 정보