apache提供的不存在的文件

时间:2016-02-16 17:00:10

标签: html apache .htaccess redirect http-status-code-404

我们说我有一个名为www.example.com的域名

在这个域的根目录中,我有一些HTML文件(index.html,blogs.html,info.html)

导航到任何文件(www.example.com/blogs)

出于某种原因,www.example.com/blogs/somerandomtext似乎也会转到同一个文件

为什么这仍然会加载页面,我可以将其设置为重定向到404错误页面。

我的域是使用Apache托管的,我的.htaccess文件位于下面。

任何帮助?

Options -MultiViews
RewriteEngine On

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/.*$ [NC]
RewriteRule \.(gif|jpe?g|png)$ - [F,NC]

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+?)/?$ $1.html [L]

ErrorDocument 400 http://www.example.com/error
ErrorDocument 403 http://www.example.com/error
ErrorDocument 404 http://www.example.com/error
ErrorDocument 500 http://www.example.com/error

ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"

1 个答案:

答案 0 :(得分:1)

您的规则无条件地将每个不存在的文件重写为.php,然后将/anything重写为/anything.html

在规则中添加这些扩展名之前,请检查是否存在相应的.php.html文件。

Options -MultiViews
CheckSpelling off
RewriteEngine On

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.com/.*$ [NC]
RewriteRule \.(gif|jpe?g|png)$ - [F,NC]

RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

RewriteCond %{DOCUMENT_ROOT}/$1\.html -f
RewriteRule ^(.+?)/?$ $1.html [L]