Я уверен, что это действительно простой ответ, но я просто не могу его разгадать. Я также новичок в nginx, но довольно хорошо разбираюсь в apache2. Я запускаю nginx на Ubuntu и пытаюсь выполнить эти два запроса:
- get nginx для обслуживания
filename.php
, когда URI вызывает filename
- Calling http://example.org/bob будет обслуживать http://example.org/bob.php, но по-прежнему http://example.org/bob отображается в URL-адресе браузера
- , когда папка запрашивается, "индекс" не отображается в URL-адресе
- Вызов http://example.org/jack/ будет обслуживать http://example.org/jack/index.php но http://example.org/jack/ по-прежнему отображается в URL-адресе (а не http://example.org/jack/index)
Моя текущая конфигурация:
server {
listen 80;
root /var/www/html;
index index.php;
location / {
try_files $uri $uri/ @php;
}
location @php {
try_files $uri.php =404;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi.conf;
}
rewrite ^/(.*)\.php$ /$1 redirect;
location ~ /\.ht {
deny all;
}
}
Мне кажется, что я действительно близок, требование (1) работает безупречно, но я не могу найти правильную конфигурацию для выполнения требования (2).
Если это помогает, это конфигурация, которая работает в Apache2, с включенным модулем mod_rewrite:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d # if a folder isn't called ...
RewriteCond %{REQUEST_FILENAME}.php -f # but a php file is ...
RewriteRule ^(.*)$ $1.php # take the basename, add .php then call that