我在服务器上的.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>
答案 0 :(得分:19)
我假设你使用的是Apache而不是IIS;
确保您已启用mod重写(您可以通过在httpd.conf
文件中找到以下行来执行此操作(通常位于/conf/
目录中如果您使用共享主机并从行的开头删除分号,这可能会有所不同)
;LoadModule rewrite_module modules/mod_rewrite.so
查找www root的相关目录标记,并将AllowOverride None
更改为AllowOverride All
在根目录中创建.htaccess文件(如果不存在)
您需要插入类似的内容;
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)应该会帮助您。
在您的情况下,请确保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配置中重定向。