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를 요청하는 것입니다.