NGINXで静的HTMLファイルを提供したいが、ファイルが見つからない場合、代わりにPHPファイルをロードし、PHPがその内容を処理する必要があります。動的前に静的ページを提供するNginx
私はtry_files
のいくつかの組み合わせをテストしていますが、私はそれの周りに頭を上げることはできません。である必要があり、各ページへの閲覧の
<?php
$path = $_SERVER['REQUEST_URI'];
$pattern = '/^\/(.*)\.html$/';
$matches = [];
$results = preg_match($pattern, $path, $matches);
if (count($matches) > 0) {
if ($matches[1] == "dynamic") {
require 'dynamic.php';
} else {
echo "Not found!";
}
} else {
echo "Index page!";
}
結果:
./
../
dynamic.php
index.php
static/
static/static.html
は、その後、私はこのような指標に小さなPHPコードを持っている:私はこのようになりますダミーPHPアプリを持っています
http://foo.bar/ - Loads index.php
http://foo.bar/static.html - Loads static/static.html
http://foo.bar/dynamic.html - Loads index.php & PHP requires dynamic.php
http://foo.bar/baz.html - Loads index.php with "not found" message
これは私がnginxの設定ファイルで得たものである:
server {
listen 80;
server_name .foo.bar *.foo.bar;
access_log /var/log/nginx/foo.access.log;
error_log /var/log/nginx/foo.error.log;
root /var/www/foo;
index index.php;
location/{
# Trying with 'try_files' here. No success.
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm-foo.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
私は全くこの行で失敗を繰り返すと明らかにしようとしてきた:
try_files $uri $uri/static /index.php;
私は何かが欠けています。助けて?
は、それはあなたのケースで書き換え、いくつかのURLを行いますが、PHPのすべての時間を使用して、表示されたページを処理することはできませんか? – AntoineB