【问题标题】:Why does page not load without file extension为什么没有文件扩展名页面无法加载
【发布时间】:2021-05-14 13:46:16
【问题描述】:

我有一个页面 url /clubs/england/arsenal/ 但它不会加载,除非它显示为 /clubs/england/arsenal.php

我已经在 .htaccess 中添加了以下内容

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting friendly-url


    【解决方案1】:

    对于您显示的示例,您能否尝试以下操作。 请确保在测试 URL 之前清除浏览器缓存。

    RewriteEngine ON
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}/$1/$2.php -f
    RewriteRule ^(clubs/england)/(.*)/?$ $1/$2.php [NC,L]
    

    【讨论】:

    • 非常感谢!问题解决了!有没有办法更通用,所以网站上的任何文件都删除了扩展名?
    • @OwenGaudion,欢迎您,您能给我一个您想在后端重写的示例链接吗?谢谢。
    • 我只是想看看是否有更多“开箱即用”的解决方案可以复制到任何未来的项目中。例如,在这个项目中可能有 4/5 个其他俱乐部/文件。显然这是可以管理的,但如果有数百人,最好有更通用的东西:)
    • @OwenGaudion,基于通用路径;如果您在谈论路径可以是任何路径,则将最后一行规则更改为遵循RewriteRule ^([^/]*)/([^/]*)/(.*)/?$ $1/$2/$3.php [NC,L] 并将第二个最后规则更改为{DOCUMENT_ROOT}/$1/$2/$3.php -f 它应该适用于任何路径,那么如果这是您的意思,欢呼并快乐学习。
    • 完美!砸东西!感谢您的所有帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 2013-09-23
    • 2019-09-14
    • 1970-01-01
    • 2013-06-28
    • 2021-01-14
    相关资源
    最近更新 更多