如何解决使用 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 举报,一经查实,本站将立刻删除。