Apache正在将文件夹重定向到具有相同名称的.html文件

时间:2016-08-25 16:22:25

标签: apache .htaccess redirect mod-rewrite

我试图将404 json fales重定向到404.json(使用" {}"作为内容)。但是apache正在将文件夹重定向到具有相同文件夹名称的html文件,并且任何自定义404.json重定向都会失败。

文件结构:

  • /例1 /
  • /示例2 /
  • /example1.html
  • /example2/data.json
  • /data.json

工作(重定向到404.html):

工作(重定向到404.json):

工作(打开文件):

无效(默认apache 404):

似乎apache正在重定向" example1 /" to" example1.html",特别是当我尝试访问目录内的文件http://example.com/example2/data.json时,显示404消息:

  

在此服务器上找不到请求的网址/example2.html/data.json。

即使没有.htaccess也会发生!所有问题都是因为example1.html文件。

htaccess的:

# Rewrite MOD
Options +FollowSymLinks
RewriteEngine On

# If requested resource exists as a file or directory go to it
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule (.*) - [L]

# 404 json
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)\.json$ 404.json [L]

# 404 page
RewriteRule . 404.html [L]

也许是一些apache文件映射配置,但我找不到任何关于它的信息。它只发生在部署服务器上,对于localhost来说没问题。 = /

1 个答案:

答案 0 :(得分:1)

在关闭MultiViews的情况下保持这样:

Options +FollowSymLinks -MultiViews
RewriteEngine On

# If requested resource exists as a file or directory go to it
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# 404 json
RewriteRule \.json$ 404.json [L,NC]

# 404 page
RewriteRule ^ 404.html [L]