URL로 이동하면 www.example.gr
제출할 수 있는 양식을 로드하고 싶습니다 www.example.gr/php/mail.php
.
내 파일 및 폴더 구조는 다음과 같습니다
root folder ( /var/www/html/app/ ) with these files:
index.php
test.php
and a second folder (/var/www/html/assets/ ) with these files:
php/phpmailer/...
php/mail.php
vendor/...
js/...
images/...
css/...
내 nginx conf는
server {
server_name example.gr www.example.gr;
root /var/www/html/app/;
index index.php index.html index.htm;
location ^~ /php {
root /var/www/html/assets/php;
index mail.php mail.html;
try_files $uri $uri/ /php/mail.php?q=$uri&$args;
location ~* \.php(/|$) {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index mail.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www/html/assets/php$fastcgi_script_name;
fastcgi_intercept_errors on;
}
}
# location /php/ {
# alias /var/www/html/assets/php/;
# }
location /js/ {
alias /var/www/html/assets/js/;
}
location /vendor/ {
alias /var/www/html/assets/vendor/;
}
location /images/ {
alias /var/www/html/assets/images/;
}
location / {
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
모든 이미지, js, css 파일이 포함된 페이지가 www.example.gr
성공적으로 로드되지만 제출이 작동하지 않습니다. 이동하면 www.example.gr/php/mail.php
404 오류가 발생합니다.
어떻게 작동하게 할 수 있나요?
답변1
블록 의 값 root
과 블록 SCRIPT_FILENAME
아래의 값 location ^~ /php
이 올바르지 않습니다.
현재 처리 중인 URI에는 접두사가 포함되며 값 /php/
과 결합되어 root
경로 이름을 형성합니다(설명된 대로).여기). 따라서 값 php
에 포함하면 안 됩니다 root
. 그렇지 않으면 경로 이름에 .../php/php/...
작동하지 않는 내용이 포함됩니다.
노력하다:
location ^~ /php {
root /var/www/html/assets;
...
location ~* \.php(/|$) {
...
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
값은 현재 범위에 있는 명령문 $document_root
의 값과 동일합니다 .root