2014-02-09 61 views
0

我遇到了一些與我的.htaccess文件有關的問題,因爲我不太瞭解,所以我想知道你們中的任何一位能否幫助我。基本上會發生以下情況:不存在的頁面到錯誤頁面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 

感謝

回答

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 
+0

感謝您的解釋。我編輯了我的htaccess並將其更改爲您的代碼。每當我去根(sub.domain.com),它給我403錯誤,直到我添加index.php它。除此之外,當我去http://sub.domain.com/#dashboard(這工作得很好),它也給我403錯誤。有沒有辦法仍然隱藏/ pages/submap包括logged-in.php /文件,但是當用戶填寫一個不存在的url時,還會將用戶重定向到ErrorDocuments? – user3131209

+0

@ user3131209不在htaccess,no。因爲你盲目地將不存在的所有內容路由到login-in.php,你必須編寫php代碼來確定請求是否應該返回404。 –