当子域上没有图像文件时,.htaccess返回404

时间:2015-02-13 19:10:19

标签: apache .htaccess

我有一个.htaccess文件,如果子域名为img0.example.infoimg1.example.infoimg2.example.info等,则该文件只会强制提供图片文件。我想在404.html中使用404响应代码提供描述性标记,但它只显示500内部服务器错误错误。

以下是我的.htaccess文件的内容:

<IfModule mod_rewrite.c>

    RewriteEngine on

    # If request is via an image subdomain, throw error 404 for any file types other than images
    RewriteCond %{HTTP_HOST} ^img[0-9]+\.example\.info$ [NC]
    RewriteCond %{REQUEST_URI} !\.(jpg|jpeg|gif|png)$ [NC]
    RewriteRule ^(.*)$ - [R=404,L]

    ErrorDocument 404 /404.html 

</IfModule>

它部分起作用,.jpg,.jpeg,.gif和.png文件都得到了正确的服务,但我无法得到那个整洁的404消息。请帮忙。

2 个答案:

答案 0 :(得分:1)

您的/404.html也会受到此规则的限制。

试试这段代码:

ErrorDocument 404 /404.html 

<IfModule mod_rewrite.c>

    RewriteEngine on

    # If request is via an image subdomain, throw error 404 for any file types other than images
    RewriteCond %{HTTP_HOST} ^img[0-9]+\.example\.info$ [NC]
    RewriteCond %{REQUEST_URI} !\.(jpg|jpeg|gif|png)$ [NC]
    RewriteRule !^404\.html$ - [R=404,L,NC]

</IfModule>

答案 1 :(得分:0)

另一种选择,只是重定向到404文件。

# If request is via an image subdomain, throw error 404 for any file types other than images

RewriteCond %{HTTP_HOST} ^img[0-9]+\.example\.info$ [NC]
RewriteCond %{REQUEST_URI} !(.+)\.(jpg|jpeg|gif|png)$ [NC]
RewriteCond %{REQUEST_URI} !^/404.html$ [NC]
RewriteRule ^(.*)$ /404.html [R=404,L]