没有 php 扩展和漂亮的 url nginx 配置替代

No php extension and pretty url nginx config alternative

我刚刚将我的代码从 apache 迁移到 nginx 服务器。

我的 apache .htaccess 的替代 nginx 配置是什么。

我使用的是删除 .php 扩展和漂亮 url 重写的规则。

RewriteEngine On

#remove .php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^\.]+)$ .php [NC,L]

#for pretty url
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ index.php?url= [NC,L]

试试这个

map $uri $pretty_url {
    ~/(.*)$    ;
}

server {

    ...

    location / {
        index index.php; # replace this to 'index index.php index.html index.htm;' if needed
        try_files $uri $uri/ @extensionless-php;
    }

    location ~ \.php$ {
        # default PHP-FPM handler here
        ...
    }

    location @extensionless-php {
        if ( -f $document_root$uri.php ) {
            rewrite ^ $uri.php last;
        }
        rewrite ^ /index.php?url=$pretty_url last;
    }

}

只需更改一行即可轻松修复。不需要额外的块。您只需要在 /etc/nginx/nginx.conf 或 /etc/nginx/sites-available/your-site.com.

中更改这一行

将位置/指令尝试文件更改为:

location / {
       try_files $uri $uri/ $uri.html $uri.php$is_args$query_string;
}

希望这对你也有用:)