我想我的nginx使显示所有网址的清洁。
通过一些研究,我做了第一个案例。它通过以下配置完成:
location / {
root html;
index index.html index.htm index.php;
try_files $uri.html $uri/ =404;
}
它适用于indexhtml。显示为indexhtml的html,但与。php。如果我更改$uri。html转换为$uri。在php中,这两种方法都不适用。也不是html。php。我曾尝试在php中放置类似的东西,但没有成功。
有什么建议吗?
为了进一步解释Mohammad的答案,您可能还需要提供从. html
和. php
到无扩展版本的重定向。
这可以实现,因为$request_uri
包含完整的原始请求URI(带参数),并且不受用户不可见的内部重写的影响。
server {
index index.html index.php;
location / {
if ($request_uri ~ ^/(.*)\.html$) { return 302 /$1; }
try_files $uri $uri/ $uri.html $uri.php?$args;
}
location ~ \.php$ {
if ($request_uri ~ ^/([^?]*)\.php($|\?)) { return 302 /$1?$args; }
try_files $uri =404;
# add fastcgi_pass line here, depending if you use socket or port
}
}
不需要额外的块和命名的位置和一切。同时将索引
行移到位置块外
server {
index index.html index.php;
location / {
try_files $uri $uri/ $uri.html $uri.php$is_args$query_string;
}
location ~ \.php$ {
try_files $uri =404;
# add fastcgi_pass line here, depending if you use socket or port
}
}
请记住,如果在同一文件夹中有一个文件夹和一个同名文件,如/folder/xyz/
和/folder/xyz。php
如果文件夹xyz
包含索引,则无法运行php文件。php
或索引。html
,请记住这一点。
根据我的研究,如果您附加/etc/nginx/conf.d/domain。tld。conf文件包括:
location / {
try_files $uri $uri.html $uri/ @extensionless-php;
index index.html index.htm index.php;
}
location ~ \.php$ {
try_files $uri =404;
}
location @extensionless-php {
rewrite ^(.*)$ $1.php last;
}
然后重新启动nginx并试一试。希望这能帮助你!更多信息可以在@tweaktalk找到(我在哪里找到的)。网
我在nginxweb服务器上,我想删除来自url的扩展。 我目前有以下会议: 如果试图遵循一些类似的案例说明,但似乎没有任何工作与我的conf。 问题是这段代码 在两种情况下运行良好: 客户要求https://mywebsite.com/page.php:好的 客户要求https://mywebsite.com/page:好的 不重写url! 如果客户端试图访问具有文件扩展名的页面,我需要告诉NG
问题内容: 我希望我的nginx使显示的所有URL干净。 通过一些研究,我使第一个案例奏效。它是通过以下配置完成的: 它适用于将indexhtml.html显示为indexhtml,但.php则没有任何反应。如果我将$uri.html更改为$uri.php,则它不适用于.html和.php。我已经尝试在php位置放置类似内容,但没有成功。 有什么建议吗? 问题答案: 根据我的研究,如果您将/etc
我一直在尝试让nginx在没有. php或. html扩展的情况下工作,我需要一点帮助。提前感谢您的时间! 我尝试了在如何使用NGINX从url中删除. php和. html扩展中找到的解决方案?但是没有效果 这是我当前的nginx配置。这是几个教程的组合,但它是有效的。
我有一个nginx服务器正在运行,希望删除。我的文件中的php扩展名。我已经尝试了一些方法,但我唯一能做到的就是打破fastcgi过程,下载php文件。服务器在以下配置下运行正常: 谢谢你的努力和时间。
我知道有很多关于这个话题的帖子,但似乎没有一条适合我。我不确定这是否是因为我必须对两个服务器块都这样做,或者我做错了什么。请帮帮我。 下面是我在Amazon远程服务器上的nginx配置,第一个块表示后端,第二个块表示前端:
问题内容: 我想在文件中放一些东西,以隐藏php文件的文件扩展名,因此转到www.example.com/dir/somepage会显示它们www.example.com/dir/somepage.php。 有什么可行的解决方案吗?我的网站使用HTTPS(如果很重要)。 这是我目前的.htaccess: 问题答案: 在您的.htaccess中在DOCUMENT_ROOT下使用以下代码: