我有一个.htaccess文件,如果子域名为img0.example.info
,img1.example.info
,img2.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消息。请帮忙。
答案 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]