0

当我关闭重写时,一个 404 会正确地进入 Google(仅用于测试),就像它应该做的那样。当它打开时,它首先运行重写并完全忽略 ErrorDocument 声明。我不明白它为什么这样做。

Options +FollowSymlinks
ErrorDocument 404 http://www.google.com
<IfModule mod_rewrite.c>
RewriteEngine Off
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
4

2 回答 2

1

好吧,你的下面.htaccess说的是

RewriteCond %{REQUEST_FILENAME} !-f     # if not a file
RewriteCond %{REQUEST_FILENAME} !-d     # if not a directory
RewriteRule . /index.php [L]            # redirect to index.php

因此,要么删除这些规则,要么关闭重写引擎。

编辑
永久链接通过捕获 404(s) 起作用,因为链接结构实际上不存在。ErrorDocument不会覆盖它,因为如果mod_rewrite决定忽略404. 例如,

RewriteCond %{REQUEST_FILENAME} !-f     # if not a file
RewriteCond %{REQUEST_FILENAME} !-d     # if not a directory
RewriteCond %{REQUEST_URI} ^/wordpress/ # & points to wordpress
RewriteRule . /index.php [L]            # redirect to index.php

现在,adomain.com/wordpress/no-such-file.php将重定向到,/index.phpdomain.com/no-such-file.php将您重定向到 Google(因为ErrorDocument)。

于 2013-07-15T21:01:10.197 回答
1

我能够使用解决我的问题

if ( is_404() ) {
      wp_redirect( 'static.htm' );
      exit;
   }

进一步定制我的404。

于 2013-07-15T21:37:41.500 回答