Ⅰ .htaccess文件应该放在哪个文件夹下
.htaccess文件可以放在根目录中,也可以放在需要配置的多个文件夹中。
总之,htaccess文件是Apache服务器中的配置文件,负责相关目录中的网页配置。通过htaccess文件,我们可以帮助我们:网页301重定向,自定义404错误页面,更改文件扩展名,允许/阻止访问特定用户或目录,禁用目录列表,配置默认文档等。
.htaccess可以实现,包括:文件夹密码保护,自动用户重定向,自定义错误页面,更改文件扩展名,阻止特定IP地址,仅允许特定IP地址,禁用目录列表和使用其他文件充当索引文件和其它功能。
(1)win10创建htaccess文件扩展阅读:
.htaccess未使用的情况:
在正常情况下,除非您无权访问主配置文件,否则不应使用.htaccess文件。有一种非常普遍的误解,即用户身份验证只能通过.htaccess文件来实现。不是这种情况。在主配置文件中编写用户认证是完全可行的,这是一种很好的方法。
当内容提供者需要在没有root权限的情况下更改特定目录的服务器配置时,应使用.htaccess文件。如果服务器管理员不愿意频繁修改配置,则可以允许用户通过.htaccess文件修改配置,特别是如果ISP在同一台机器上运行多个用户站点,并希望用户可以更改配置他自己。
通常,您应该尽可能避免使用.htaccess文件。您希望放在.htaccess文件中的任何配置都可以放在主配置文件的<Directory>部分中,并且效率更高。
如果AllowOverride启用了.htaccess文件,Apache需要在每个目录中查找.htaccess文件,因此启用.htaccess将导致性能下降,无论是否实际使用。此外,对于每个请求,您需要读取.htaccess文件一次。
Ⅱ 如何写.htaccess文件
直接编辑 .htaccess。实质二者都是修改文件 .htaccess,只是前者手工编辑,后者是由 cPanel 完成。这里主要介绍的第二种方法。
注意:在设置 301 重定向之前务必备份相应目录下的.htaccess文件。
1.重定向domain.com到www.domain.com
这种重定向旨在使域名唯一,是网站SEO必须要做的,后面重定向www.domain.com到domain.com也是出于同样的原因,只是形式不同。打开.htaccess文件,加入以下规则。(下面的规则是针对主域名的,子域名要修改,否则子域名也会被重写,下面会专门对这个进行说明)
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
2.重定向www.domain.com到domain.com
RewriteEngine On
RewriteCond %{HTTP_HOST} !^domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]
3.重定向olddomain.com到www.newdomain.com
RewriteEngine On
RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301]
4.重定向olddomain.com to newdomain.com
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]
RewriteRule ^(.*)$ http://newdomain.com/$1 [L,R=301]
5.重定向domain.com/file/file.php 到 otherdomain.com/otherfile/other.php
RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteRule ^file/file.php$ http://www.otherdomain.com/otherfile/other.php [R=301,L]
5.重定向domain.com到www.domain.com,而且不影响子域名
之所以特别说明不影响子域名,是由于上面说的那个方法只有在没子域名的情况下才可行,如果域名含有子域名,而且子域名又不想被重定向,这时候就需要下面的方法来进行301重定向;
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www.z132.com|t.z132.com)$ [NC]
RewriteRule ^(.*)$ http://www.z132.com/$1 [L,R=301]
上面的代码说明:第一行表示说开启mod-rewrite,第二行就表示要重定向的对象,代码的意思是出了www.z132.com和 t.z132.com这两个域名之外的所有域名,因为本博含有一个子域名的微薄t.z132.com,意思是当域名是t.z132.com的时候不进行重定向,第三行表示要重定向的目标。上面是一个例子,其实主要思想还是正则表达式,如果有多个子域名不想重定向,则同样的可以在第二行进行添加!