【问题标题】:Redirect folder to html file将文件夹重定向到 html 文件
【发布时间】:2019-02-18 18:25:14
【问题描述】:

我正在尝试建立一个曾经在 wordpress 上设置但现在是平面文件的网站。平面文件都是根文件夹中的 .html 文件,我需要进行 htaccess 重写,以便像 mysite.com/test 和 mysite.com/test/ 这样的 url 被同等对待,但也提供 .html与 url 匹配的文件(例如,在请求 mysite.com/test、mysite.com/test/、mysite.com/test.html 等时提供 mysite.com/test.html)。

这是我正在尝试的代码,除了用户请求 mysite.com/test/(带有尾部斜杠)之外,它可以获取所有内容。

期望的结果: mysite.com/test, mysite.com/test/, mysite.com/test.html ALL serve test.html (但url通常不带html扩展名)

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L,QSA]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/
RewriteRule ^(.*)\.html$ /$1 [R=301,L]

【问题讨论】:

    标签: .htaccess


    【解决方案1】:

    寻找任何不是斜线的东西。

    RewriteRule ^([^/]+)$ $1.html [L,QSA]
    

    【讨论】:

    • 解决了内部服务器错误,但我认为我仍然需要“离开文件夹”,可以这么说,因为我现在得到了 404。即将去检查日志,看看它最终要求什么。
    【解决方案2】:

    我补充说:

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R] # <- for test, for prod use [L,R=301]
    

    在线重写引擎下方,这解决了我的问题以及此处的其他答案。

    【讨论】:

      猜你喜欢
      • 2021-09-08
      • 2017-12-05
      • 1970-01-01
      • 1970-01-01
      • 2018-09-30
      • 2013-01-05
      • 2017-01-02
      • 2018-09-02
      • 2013-04-11
      相关资源
      最近更新 更多