【问题标题】:NGINX/SWAG: Rewrite URL to remove .php extensionNGINX/SWAG:重写 URL 以删除 .php 扩展名
【发布时间】:2022-01-05 08:48:26
【问题描述】:

互联网上有几十个类似的问题(stackoverflow 和其他网站),但没有一个对我有用。 我正在尝试重写我的 URL 以在最后摆脱 .php 扩展名。我已经在我的配置中尝试了常见的重写。 我希望有人知道我还没有使用的答案。

【问题讨论】:

    标签: php nginx url url-rewriting


    【解决方案1】:

    在您的 vhost 配置文件或 nginx.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。

    【讨论】:

    • 您好,谢谢您的回答。我已经尝试过了,但当然我又做了一次。可悲的是它仍然不起作用。始终“找不到 404”。 404 不应该被“try_files $uri =404;”截获吗? ?
    • 更正:我的 SWAG 设置是垃圾。我用一个很好的设置重新创建了所有东西,现在它可以与你的代码一起使用。您必须在 /swag/config/nginx/site-confs/default 下添加它。但要小心!你不能在那里有多个标准位置块。因此,只需删除那个已经存在的。
    【解决方案2】:

    你可以使用 .htaccess

    在你的 PHP 文件所在的目录中新建一个文件,新建一个名为 .htaccess 的文件,在其中输入以下内容:

    RewriteCond %{THE_REQUEST} ^.*/*\.php
    RewriteRule ^(.*).php$ /$1 [R=301,L]
    

    【讨论】:

    • 您好,谢谢您的回答。我已经试过了,当然我又做了一次,但遗憾的是它不起作用。我认为我的配置必须完全错误:(
    猜你喜欢
    • 2019-04-21
    • 2014-01-25
    • 2022-03-04
    • 2016-07-22
    • 1970-01-01
    • 2014-12-22
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多