【问题标题】:htaccess, redirect to a page but prevent direct accesshtaccess,重定向到一个页面,但阻止直接访问
【发布时间】:2018-10-18 09:08:11
【问题描述】:

我正在尝试创建重定向以获得精美的 url,但我正在努力阻止访问者访问直接文件。

例如,我有一个文件夹 pages,其中包含我所有的 .html 页面,我想将访问者从 www.mysite.com/mypage 重定向到 www.mysite.com/pages/mypage.html(重定向但仍显示花哨的 url 版本)。我已经在我的.htaccess中添加了这条规则@

RewriteRule ^mypage /pages/mypage.html [L]

这很好用,如果访问者仍然能够直接从浏览器访问www.mysite.com/pages/mypage.html,这是真正的问题,我不想允许这样做。 我尝试了很多找到的解决方案,但似乎没有任何效果。我理想的解决方案是在访问者尝试访问此页面时重定向到 404 页面,但如果不可能,我也可以返回 410 (gone) 状态。

我在这里附上我完整的.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteRule ^mypage /pages/mypage.html [L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.html [L]
</IfModule>

感谢您的宝贵时间

【问题讨论】:

  • 嗨,Gumma。我已经为您的问题提供了有效的解决方案以及测试仪。如果有任何问题,请发表评论,或者如果这解决了您的问题,请投票并接受答案,以便其他 SO 用户可以从中受益。

标签: .htaccess


【解决方案1】:

如果要发出410,可以使用[G]标志。规则如下

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} ^/pages/? [NC]
RewriteRule .? - [G]

RewriteRule ^mypage /pages/mypage.html [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]

可以在在线 htaccess 测试员link找到相同的工作示例

如果你想重定向到 pages 目录下的 404.html 你可以使用下面的规则

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} ^/pages/? [NC]
RewriteRule (.*) /pages/404.html [L]

RewriteRule ^mypage /pages/mypage.html [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]

可以在在线 htaccess 测试人员link找到相同的工作示例

【讨论】:

  • 您好,感谢您的回复,但如果我尝试您的第一个解决方案并进入/mypage,htaccess 将返回gone 状态,就像重定向后,我会再看一遍在htaccess 重定向我在gone 状态(image.ibb.co/bYtQY0/Untitled.png
  • 您不希望 /pages 发送 410。顺便说一句,它不是重定向,它只是发送 410 消失而不向浏览器发送重定向标头。如果您不想要,可以从重写规则中删除可选的正则表达式。 ^/页/?到 ^/页/。您也可以通过在线 htaccess 测试仪对其进行测试。请告诉我
  • 如果您看到附加的屏幕(网址栏),您可以看到当我尝试转到/privacy 页面时,它会返回消失状态(好像我要去/pages/privacy ),当访问者尝试访问任何/pages/? 时,我确实想发送410 gone,但现在正在从/privacy 页面本身返回410 gone 状态
  • 从截图中我可以推断出两件事。首先是我也可以看到上面的一些重写规则。其次pages文件夹下是否存在privacy.html?
  • 上面的重写规则都被注释掉了,是我的旧代码不工作而且文件存在,看图image.ibb.co/deRZRL/Untitled.png
猜你喜欢
  • 2011-12-01
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
  • 2015-10-27
  • 2019-08-23
  • 2017-09-02
  • 2021-02-19
  • 1970-01-01
相关资源
最近更新 更多