今天我尝试首次编写.htaccess文件,以便从url栏中删除.html扩展名以及其他一些我想做的事情。由于我对这一切都不熟悉,所以我在编写之前阅读了几篇文章。
我最终得到了以下代码。我还从所有链接中删除了.html。问题是,访问我的域时,我收到以下错误。
//The resource you are looking for has been removed,
//had its name changed, or is temporarily unavailable.
我的代码是否正确?
更新.htaccess
//Rewrite to www
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
//Remove .html UNTIL NOW THIS IS THE ONLY PART
//OF THE CODE THAT ACTUALLY WORKS.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
//Caching schema
<FilesMatch "\.(jpg|png)$">
Header set Cache-Control "private, max-age=160704000"
</FilesMatch>
//Prevent viewing of .htaccess file
<Files .htaccess>
order allow,deny
deny from all
</Files>
单独的.htaccess
//Prevent directory listings
Options All -Indexes
主要错误 如果我点击链接:
<a href="index">Home</a>
然后我得到同样的错误。
提前谢谢大家。
答案 0 :(得分:0)
这在Apache中是原生的,不使用mod_rewrite
选项使用MultiViews
。
MultiViews的效果如下:如果服务器收到/ some / dir / foo的请求,如果/ some / dir启用了MultiViews,并且/ some / dir / foo不存在,那么服务器会读取目录查找名为foo。*的文件,并有效地伪造一个命名所有这些文件的类型映射,为它们分配相同的媒体类型和内容编码,如果客户端通过名称请求其中一个文件。然后,它会根据客户的要求选择最佳匹配。
答案 1 :(得分:-1)
我终于设法解决了部分问题。对于初学者,我将服务器从Windows更改为linux。
然后删除html扩展名我在.htaccess中使用了这段代码(其他代码没有运行,给我一个错误信息)
//Remove .html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
我还从所有链接中删除了任何.html实例。 现在它就像一个魅力。