微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 nginx 服务器将 URL 重写为 index.php

如何解决使用 nginx 服务器将 URL 重写为 index.php

我需要帮助在 Nginx 服务器上配置我的网站。早些时候我使用 apache,所以我使用 htaccess 在 index.PHP重定向。但我才知道 Nginx 不支持 htaccess。我是 Nginx 服务器的新手。让我用例子说得更清楚。

当我使用 apache 时,我的 htaccess 如下所示-

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.*)$ index.PHP [L]
</IfModule>

我现在需要在 Nginx 服务器中做同样的事情。请任何人建议我如何做到这一点。我试图自己弄清楚并尝试了很多东西,但没有任何效果,例如-

我试过了-

location / {
    # Check if a file or directory index file exists,else route it to index.PHP.
    try_files $uri $uri/ /index.PHP;
}

我也尝试了这里建议的解决方案: How to enable URL rewrite in Ubuntu,nGinx and codeigniter?

location ~* \.PHP$ {
     fastcgi_pass unix:/run/PHP/PHP5.6-fpm.sock;
     root /var/www/html/;
     try_files $uri =404;
     fastcgi_index  index.PHP;
     fastcgi_param   SCRIPT_FILENAME $request_filename;
     include fastcgi_params;
     fastcgi_buffer_size 128k;
     fastcgi_buffers 256 4k;
     fastcgi_busy_buffers_size 256k;
     fastcgi_temp_file_write_size 256k;
}

我的要求是重写所有这些网址:

https://example.com/xyz 
https://example.com/abc
https://example.com/pqr

https://example.com/index.PHP

我的文件夹结构- folder-structer.png

提前致谢。

解决方法

如果你只想在文件不存在时重写(而不是重定向),你应该使用“try_files”,例如:

location / {
    try_files $uri $uri/ /index.php =404;
}

然后nginx会先测试请求是否映射到一个文件,然后如果它映射到一个包含索引文件的目录,然后在文档根目录中查找index.php。它将根据找到的内容解决请求。如果没有匹配项,它将返回 404。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。