我们说我有一个名为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"
答案 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]