当我关闭重写代码时,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>
最佳答案
好吧,下面.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
现在,
domain.com/wordpress/no-such-file.php
将重定向到/index.php
,而domain.com/no-such-file.php
会将您重定向到Google(因为ErrorDocument
)。关于apache - 在Htaccess中在Mod_rewrite之前运行ErrorDocument,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17663773/