Ⅰ .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的時候不進行重定向,第三行表示要重定向的目標。上面是一個例子,其實主要思想還是正則表達式,如果有多個子域名不想重定向,則同樣的可以在第二行進行添加!