【问题标题】:removing .php but now the folder structure doesn't work and trailing slash删除 .php 但现在文件夹结构不起作用和斜杠
【发布时间】:2017-06-05 23:30:22
【问题描述】:

我是通过使用删除 .php 扩展名

RewriteEngine On
RewriteRule ^([^\.]+)$ $1.php [NC,L]

但这引入了一个问题,即我无法访问文件夹目录及其内部文件,服务器甚至不接受结尾的斜杠。

所以让我访问这个页面

www.example.com/family

url 可以正常加载

如果我以 / 结尾访问此页面

www.example.com/family/

请注意,我在末尾有斜杠 /,它不起作用

现在如果我有一个目录或文件夹名称系列

www.example/family

这是目录而不是我的页面,然后页面将无法工作,也无法访问目录或文件夹。

【问题讨论】:

标签: php .htaccess


【解决方案1】:

添加重写规则以重定向到带有斜杠的 URL:

RewriteRule (.*)$ /$1 [L,R=301]

输入网址:http://www.example.com/family

输出网址:http://www.example.com/family/

【讨论】:

  • 事实上我希望服务器在最后接受 / 斜线。
  • 那么您的输入和预期输出 URL 是什么?
  • 输入 www.example.com/family 输出 www.example.com/family/
  • 如果有同名页面的内部目录,就会出现问题,页面和文件夹无法加载。
  • 不,它没有,它说:找不到对象!它改变了根 url
【解决方案2】:

看来我可以通过使用此代码来做到这一点:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]

如果其他人正在搜索相同的问题,我将在此处粘贴。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 2018-10-30
    • 2012-12-15
    • 2016-06-16
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多