不存在的页面到错误页面htaccess

时间:2014-02-09 23:12:17

标签: .htaccess url-rewriting url-redirection

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

每当我输入一个不存在的网址时,例如domain.com/peanut,它会显示我已隐藏在我的.htaccess中的logged-in.php页面,这意味着什么都没有发生,内容正在显示。< / p>

需要将不存在的页面重定向到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

谢谢

1 个答案:

答案 0 :(得分: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