2011-08-23 106 views
0

我想重定向到錯誤頁面,如果頁面未找到。所以我在.htaccess文件中添加了這段代碼。找不到htaccess 404問題?

# '404 Not Found' error 
ErrorDocument 404 /index.php?p=error&code=404 

但是當我測試它不會重定向到index.php文件。

我的整個.htaccess文件代碼是在這裏

#AuthName "Restricted Area" 
#AuthType Basic 
#AuthGroupFile /dev/null 
#require valid-user 
#<Files "/site/captcha/"> 
# Allow from all 
#</Files> 

<IfModule mod_rewrite.c> 
Options +FollowSymLinks 
RewriteEngine on 

## File paths are relative to the Document Root (/) 
# '400 Bad Request' error 
ErrorDocument 400 /index.php?p=error&code=400 
# '404 Not Found' error 
ErrorDocument 404 /index.php?p=error&code=404 
# '403 Forbidden' error 
ErrorDocument 403 /index.php?p=error&code=403 
# '401 Unauthorized' error 
ErrorDocument 401 /index.php?p=error&code=401 
# '500 Internal Server Error' 
ErrorDocument 500 /index.php?p=error&code=500 

############################# Pages ########################################################## 

RewriteRule ^home/$ index.php [S=1] 
RewriteRule ^home$ index.php [S=1] 

</IfModule> 

回答

0

要開始使用 - 將所有ErrorDocument指示出<IfModule mod_rewrite.c> - 沒有必要在所有的這一點。

現在它告訴Apache:「僅在啓用了mod_rewrite時才使用ErrorDocument」。

如果它現在不適合你,那麼很可能mod_rewrite實際上並未啓用。但是,如果你把他們外面<IfModule mod_rewrite.c>塊(之前它),那麼它應該工作(只要是的.htaccess識別和處理被Apache):

#AuthName "Restricted Area" 
#AuthType Basic 
#AuthGroupFile /dev/null 
#require valid-user 
#<Files "/site/captcha/"> 
# Allow from all 
#</Files> 

Options +FollowSymLinks 

# '400 Bad Request' error 
ErrorDocument 400 /index.php?p=error&code=400 
# '404 Not Found' error 
ErrorDocument 404 /index.php?p=error&code=404 
# '403 Forbidden' error 
ErrorDocument 403 /index.php?p=error&code=403 
# '401 Unauthorized' error 
ErrorDocument 401 /index.php?p=error&code=401 
# '500 Internal Server Error' 
ErrorDocument 500 /index.php?p=error&code=500 

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    # Pages 
    RewriteRule ^home/?$ index.php [L] 
</IfModule> 

附: 我也修改了您的重寫規則:將它們連接在一起成爲單個規則。

+1

我已經試過這個,但它不會工作。 –

+0

那麼你看到了什麼錯誤?是共享主機嗎?或者您完全控制了服務器?出於安全/性能的目的,可能完全不處理.htaccess文件/忽略。如果它是你的服務器,那麼你可能需要在服務器配置中的適當位置添加'AllowOverride All'指令。否則(如果它是共享託管服務器)聯繫您的託管公司。 – LazyOne