404找不到我的.htaccess页面

时间:2013-07-14 12:53:15

标签: php http-status-code-404

我在服务器上的.htaccess下面有未找到的页面规则,但它似乎不起作用。有什么想法吗?

RewriteEngine on
RewriteRule ^article_detail/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ article_detail.php?article_det=$2
Options +FollowSymLinks
ErrorDocument 404 http://www.example.com/main/404_not_found.html


# compress text, HTML, JavaScript, CSS, and XML

<IfModule mod_ext_filter.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
# remove browser bugs
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>

5 个答案:

答案 0 :(得分:19)

我假设你使用的是Apache而不是IIS;

  1. 确保您已启用mod重写(您可以通过在httpd.conf文件中找到以下行来执行此操作(通常位于/conf/目录中如果您使用共享主机并从行的开头删除分号,这可能会有所不同)

    ;LoadModule rewrite_module modules/mod_rewrite.so

  2. 查找www root的相关目录标记,并将AllowOverride None更改为AllowOverride All

  3. 在根目录中创建.htaccess文件(如果不存在)

  4. 您需要插入类似的内容;

    ErrorDocument 500 /errordocs/500.html

    ErrorDocument 404 /errordocs/404.html

    ErrorDocument 401 /errordocs/401.html

    ErrorDocument 403 /errordocs/403.html

    • 您可以ErrorDocument 404 /errordocs/404.html代替ErrorDocument 404 http://www.yourdomain.com/errordocs/404.html,也可以只显示一条简单讯息ErrorDocument 404 "Sorry can't allow you access today"

    • 如果您遇到任何问题,Apache Manual (ErrorDocument Directive)应该会帮助您。

  5. 在您的情况下,请确保AllowOverride All已启用,您在根目录中编辑.htaccess文件,并确保您可以点击错误页面的网址,如果您指定的网址没有任何内容Apache将返回默认的404。

答案 1 :(得分:1)

在您的apache配置中,在您网站的“目录”部分中,请确保您可以覆盖FileInfo指令。

这样的东西

AllowOverride FileInfo

http://httpd.apache.org/docs/current/mod/core.html#errordocument

答案 2 :(得分:1)

尝试在apache配置中取消注释来自httpd.conf的行。

#LoadModule rewrite_module modules/mod_rewrite.so

取消注释:

LoadModule rewrite_module modules/mod_rewrite.so

同时重启apache

答案 3 :(得分:0)

你试过ErrorDocument 404 /main/404_not_found.html吗?

只是因为你有一些干扰你的网址(不确定这是否是你的完整htaccess)?我通常不会把整个网址放在尽管技术上你可以。

您也可以直接访问404页面吗?

答案 4 :(得分:0)

尝试通过ErrorDocument 404 http://www.google.com

更改该行

如果可行,则意味着您使用的路径配置错误。我不知道你的目录结构,所以我可以给你很好的代码来写。

我不认为这是一个.htaccess错误,因为如果是,你会收到500内部错误。

如果这个技巧不起作用,那意味着在你的apache配置中重定向。