【问题标题】:Non existent pages to error page htaccess不存在的页面到错误页面 htaccess
【发布时间】:2014-02-10 07:35:58
【问题描述】:

我的 .htaccess 文件有一些问题,由于我不太了解它,我想知道是否有人可以帮助我。基本上会发生以下情况:

每当我输入一个不存在的 url,比如 domain.com/peanut,它就会显示我隐藏在我的 .htaccess 中的 logged-in.php 页面,这意味着什么都没有发生并且内容正在显示。

不存在的页面需要重定向到 ErrorDocuments。这是我的 .htaccess 文件

RewriteEngine On
RewriteBase /

#Hide de submap pages
RewriteRule ^$ pages/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ pages/$1

#hide de logged-in.php file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ logged-in.php?$1 [L,QSA]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/logged-in\.php [NC]
RewriteRule ^ %1 [R=301,L]


ErrorDocument 400     /400.html
ErrorDocument 401     /401.html
ErrorDocument 403     /403.html
ErrorDocument 404     /404.html
ErrorDocument 500     /500.html

谢谢

【问题讨论】:

    标签: .htaccess url-rewriting url-redirection


    【解决方案1】:

    这是导致它的规则:

    #hide de logged-in.php file
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ logged-in.php?$1 [L,QSA]
    

    但它看起来像是你想要的东西。该规则实质上是说“如果请求是针对不存在的文件或目录”,则将其重写为logged-in.php。下面的规则接受logged-in.php 的请求并重定向浏览器以删除 URL 的“logged-in.php”位。

    如果您想删除它,只需将您的 htaccess 文件更改为:

    RewriteEngine On
    RewriteBase /
    
    #Hide de submap pages
    RewriteRule ^$ pages/ 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{DOCUMENT_ROOT}/pages%{REQUEST_URI} -f [OR]
    RewriteCond %{DOCUMENT_ROOT}/pages%{REQUEST_URI} -d
    RewriteRule ^(.*)$ pages/$1 [L]
    
    
    ErrorDocument 400     /400.html
    ErrorDocument 401     /401.html
    ErrorDocument 403     /403.html
    ErrorDocument 404     /404.html
    

    【讨论】:

    • 感谢您的解释。我编辑了我的 htaccess 并将其更改为您的代码。每当我转到根目录 (sub.domain.com) 时,它都会给我 403 错误,直到我将 index.php 添加到它。除此之外,当我转到sub.domain.com/#dashboard(工作得非常好)时,它也给了我 403 错误。有没有办法仍然隐藏 /pages/ 子图,包括 login.php/ 文件,但在用户填写不存在的 url 时也将用户重定向到 ErrorDocuments?
    • @user3131209 不在 htaccess 中,不。因为你盲目地将不存在的所有内容路由到logged-in.php,所以你必须编写php代码来确定请求是否应该返回404。
    猜你喜欢
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    相关资源
    最近更新 更多