使用.htaccess为某些文件类型设置Web服务器处理404错误(ErrorDocument 404 +重写规则)

部长

这是我在这个很棒的社区中的第一个问题(请告诉我我做错了什么)。在过去的5-6年中,我从您的回答中学到了很多东西,现在我有一个非常具体的问题,我在Internet上找不到(这可能吗?)...

目标是设置自定义ErrorDocument 404,以处理不存在的选定静态文件,例如:/notfound.jpg以及在子目录(对于任何目录):/ dir/notfound.jpg中,用于在启用了漂亮永久链接的Wordpress下运行的网站。当某些选定的静态文件丢失或链接不正确时,它将避免服务器上的高负载!

我在.htaccess文件中使用了W3 Total缓存插件中经过稍微修改的代码:

ErrorDocument 404 /_code_404.html

# BEGIN (modified) W3TC Skip 404 error handling by WordPress for static files
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !(robots\.txt|sitemap\.xml(\.gz)?)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} \.(css|js|bmp|gif|ico|jpg|jpeg|jpe|png|swf)$ [NC]
RewriteRule .* - [L]
</IfModule>
# END (modified) W3TC Skip 404 error handling by WordPress for static files

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

我正在使用Cpanel的2台不同服务器上,在共享计划上进行尝试,它们都具有具有永久链接的Wordpress,结果是相同的:

  1. 可以像http://mydomain.com/notfound.jpg之类的请求一样正常工作

  2. 对于像http://mydomain.com/dir/notfound.jpg这样的子目录中的未找到文件不起作用在这种情况下,WP处理请求并显示404页面,对于某些文件类型,例如对于静态文件,例如css,js,jpg和其他一些文件,我想避免这样做。

欢迎任何答案和评论,谢谢!我可以尝试您可能有的任何建议(甚至未经测试)。

编辑1:互相注意以尝试使其正常工作(请参见已接受的答案和下面的注释):

看来您必须(或取决于服务器配置)设置自定义错误404页面,否则排除某些选定文件类型的重写将无法进行,因此WP将处理该请求!(似乎没有多少人注意到这一点,否则可能与服务器配置有关)

我意识到了这一点,因为即使在我写这个问题之前,我都在尝试提出的解决方案,但是没有“ ErrorDocument 404”这一行,所以它不起作用。

编辑2:测试和另一个注意事项:

  1. 在测试期间,我测试了带有查询字符串的URL:/12345.css?v=5和/dir4/12345.css?v=3&t=66 [效果很好,因为REQUEST_URI排除了查询字符串!]

  2. 需要注意的非常重要的一点是,服务器通常应针对丢失的文件返回HTTP代码404(否则搜索引擎可能会损害您的排名)。如果您在以下位置设置完整域名:ErrorDocument 404 http://mydomain.com/_code_404.html,则“客户端将不会收到原始错误状态代码,而是会收到重定向状态代码”。(参考-httpd.apache.org/docs/2.0/mod/core.html#errordocument)

阿努巴瓦

你可以试试这个吗?

ErrorDocument 404 /_code_404.html

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_URI} !(robots\.txt|sitemap\.xml(\.gz)?)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} \.(css|js|bmp|gif|ico|jpe?g|jpe|png|swf)$ [NC]
RewriteRule .* - [L]

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

</IfModule>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用.htaccess设置某些文件类型的Web服务器处理404错误(ErrorDocument 404 +重写规则)

来自分类Dev

简单的htaccess重写规则错误404

来自分类Dev

简单的htaccess重写规则错误404

来自分类Dev

.htaccess和重写规则404未找到

来自分类Dev

重写规则,在xampp上出现404错误

来自分类Dev

WordPress的URL重写规则产生404错误

来自分类Dev

使用重写规则从URL中删除.php后,css和img文件具有404

来自分类Dev

对URL使用htaccess重写规则

来自分类Dev

.htaccess重写规则重定向到404页面

来自分类Dev

Nginx重写规则不起作用,引发404错误

来自分类Dev

如何使用WildFly / JBOSS 16配置URL重定向?(重写规则),已部署的Angular应用出现404“未找到”错误

来自分类Dev

如果没有URL重写规则,如何返回404响应

来自分类Dev

在Windows的url中使用htaccess重写规则:

来自分类Dev

使用.htpasswd重写.htaccess冲突中的规则

来自分类Dev

使用.htaccess在重写规则中匹配问号

来自分类Dev

htaccess使用重写规则重定向URL

来自分类Dev

Homestead .htaccess 使用 Angular 7 重写规则

来自分类Dev

更新了htaccess中的重写规则,在Google Web Master工具中出现错误404

来自分类Dev

使用.htaccess重写规则重定向到服务器上的其他文件夹

来自分类Dev

URLRewrite“重定向”规则有效,但“重写”规则失败(404)

来自分类Dev

传递多个变量时,.htaccess重写规则会导致错误404

来自分类Dev

使用 .htaccess 重写 url 后出现 404 错误

来自分类Dev

如何使用.htaccess规则将.php重写为.html?

来自分类Dev

使用htaccess重写规则访问相对的CSS / JS文件

来自分类Dev

使用.htaccess处理404错误

来自分类Dev

使用重写规则通过htaccess传递变量

来自分类Dev

使用regexp和inifite重定向的htaccess重写规则

来自分类Dev

使用regexp和inifite重定向的htaccess重写规则

来自分类Dev

.htaccess重定向到使用重写规则的URL

Related 相关文章

  1. 1

    使用.htaccess设置某些文件类型的Web服务器处理404错误(ErrorDocument 404 +重写规则)

  2. 2

    简单的htaccess重写规则错误404

  3. 3

    简单的htaccess重写规则错误404

  4. 4

    .htaccess和重写规则404未找到

  5. 5

    重写规则,在xampp上出现404错误

  6. 6

    WordPress的URL重写规则产生404错误

  7. 7

    使用重写规则从URL中删除.php后,css和img文件具有404

  8. 8

    对URL使用htaccess重写规则

  9. 9

    .htaccess重写规则重定向到404页面

  10. 10

    Nginx重写规则不起作用,引发404错误

  11. 11

    如何使用WildFly / JBOSS 16配置URL重定向?(重写规则),已部署的Angular应用出现404“未找到”错误

  12. 12

    如果没有URL重写规则,如何返回404响应

  13. 13

    在Windows的url中使用htaccess重写规则:

  14. 14

    使用.htpasswd重写.htaccess冲突中的规则

  15. 15

    使用.htaccess在重写规则中匹配问号

  16. 16

    htaccess使用重写规则重定向URL

  17. 17

    Homestead .htaccess 使用 Angular 7 重写规则

  18. 18

    更新了htaccess中的重写规则,在Google Web Master工具中出现错误404

  19. 19

    使用.htaccess重写规则重定向到服务器上的其他文件夹

  20. 20

    URLRewrite“重定向”规则有效,但“重写”规则失败(404)

  21. 21

    传递多个变量时,.htaccess重写规则会导致错误404

  22. 22

    使用 .htaccess 重写 url 后出现 404 错误

  23. 23

    如何使用.htaccess规则将.php重写为.html?

  24. 24

    使用htaccess重写规则访问相对的CSS / JS文件

  25. 25

    使用.htaccess处理404错误

  26. 26

    使用重写规则通过htaccess传递变量

  27. 27

    使用regexp和inifite重定向的htaccess重写规则

  28. 28

    使用regexp和inifite重定向的htaccess重写规则

  29. 29

    .htaccess重定向到使用重写规则的URL

热门标签

归档