透過 .htaccess 替網頁作密碼保護
透過 .htaccess 替網頁作密碼保護
首先建立一個要用密碼來保護的目錄 (如 secure)
在這個目錄下建立一個 .htaccess 的檔案, 內容如下
AuthUserFile /user1/staff/tung/public_html/secure/.passwd
AuthGroupFile /dev/null
AuthName "access"
AuthType Basic
<Limit GET>
require valid-user
</Limit>
上面這個檔案會把整個 security 目錄 (含所有子目錄), 都用紅色部份所標明的 .passwd 保護起來, 任何想要瀏覽 security 目錄內網頁的人, 都必須輸入正確的使用者名稱與密碼才行
建立 .passwd 這個密碼檔
cd security
htpasswd -c .passwd test
然後輸入一組密碼
上面這個命令會建立 .passwd 這個檔, 並放入使用者 test 與其密碼
如果你希望多放幾個使用者到密碼檔裡, 那麼繼續
htpasswd .passwd test2
並輸入 test2 的密碼
要注意只有在第一次時才要用 -c 這個參數, 它代表重新建立一個密碼檔, 如果在密碼檔已存在的情形下使用 -c 這個參數, 密碼檔舊有記錄會被清除
.passwd 檔案是一個普通的文字檔, 你可以用一般的文書編輯器去處理它, 刪除不要的使用者名稱與密碼
最後將要被保護的網頁放到 .htaccess 所在的子目錄中
測試一下
(name=test, passwd=test 或 name=test2, passwd=test)
透過 .htaccess 替網頁作來源 IP 管制
比如說你希望只有來自 *.happygo.idv.tw 或是 127.0.* 的使用者才能瀏覽你的網頁, 請在上述的 .htaccess 檔案中, 加入下列片段即可
<Limit GET>
order deny,allow
deny from all
allow from .happygo.idv.tw
allow from 127.0.
</Limit>
六: 何時使用.htaccess中的重寫規則定義?
六: 何時使用.htaccess中的重寫規則定義?
假如你對你的的網站內容所在的服務器沒有管理員權限,或者你的網站放在ISP的服務器
上托管等等條件下,你無法改寫主配置文件,然而你可以對你的WEB站點內容所在的目錄
有寫權限,則你可以設置自己的.htaccess
文件達到同樣的目的。但你需要確定主配置文件中對你的網站所在的目錄定義了下面的內
容:
Options Indexes FollowSymLinks
AllowOverride all
否則你的.htaccess不會工作。
啟用Rewrite服務器配置說明
在開始以下設置之前,請首先諮詢您的空間服務商
空間是否支持 Rewrite 以及是否支持對站點目錄中 .htaccess 的文件解析
否則即便按照下面的方法設置好了,也無法使用
注意:
以下規則,僅適用於程序可以通過獨立域名或者二級域名直接訪問。
如果您的程序需要域名後面加目錄名(比如:xxxxx)的方式才可以訪問,那麼,您需要手工修改以下規則:
將 「RewriteBase /」 修改為 「RewriteBase /xxxxx」
其中,「xxxxx」 為您的程序目錄名
-----------------------------------------------------------------------
RewriteEngine On
RewriteBase /
RewriteRule ^(space|network)-(.+).html$ $1.php?rewrite=$2 [L]
RewriteRule ^(space|network).html$ $1.php [L]
RewriteRule ^([0-9]+)$ space.php?uid=$1 [L]
-----------------------------------------------------------------------
添加內容時,請遵照上面的提示,修改程序所在的路徑
然後保存為文件 .htaccess 。將 .htaccess 文件上傳到程序所在的目錄中
進入站點設置,根據需要開啟 URL 靜態化 功能
===============================================
+ Apache Web Server(獨立主機用戶)
===============================================
首先確定您使用的 Apache 版本,及是否加載了 mod_rewrite 模塊。
Apache 1.x 的用戶請檢查 conf/httpd.conf 中是否存在如下兩段代碼:
LoadModule rewrite_module libexec/mod_rewrite.so
AddModule mod_rewrite.c
Apache 2.x 的用戶請檢查 conf/httpd.conf 中是否存在如下一段代碼:
LoadModule rewrite_module modules/mod_rewrite.so
如果存在,那麼在配置文件(通常就是 conf/httpd.conf)中加入如下代碼
此時請務必注意,如果網站使用通過虛擬主機來定義
請務必加到虛擬主機配置,即 中去,如果加在虛擬主機配置外部將可能無法使用
改好後然後將 Apache 重啟。
注意:
以下規則,僅適用於程序可以通過獨立域名或者二級域名直接訪問。
如果您的程序需要域名後面加目錄名的方式才可以訪問,那麼,您需要手工修改以下規則:
將 「^/」 修改為 「^/xxxxx/」
其中,xxxxx 為您的程序目錄名
-----------------------------------------------------------------------
RewriteEngine On
RewriteRule ^/(space|network)-(.+).html$ /$1.php?rewrite=$2 [L]
RewriteRule ^/(space|network).html$ /$1.php [L]
RewriteRule ^/([0-9]+)$ /space.php?uid=$1 [L]
-----------------------------------------------------------------------
如果沒有安裝 mod_rewrite,您可以重新編譯 Apache
並在原有 configure 的內容中加入 --enable-rewrite=shared
然後再在 Apache 配置文件中加入上述代碼即可。
進入站點設置,根據需要開啟 URL 靜態化 功能
Rewrite規則
apache 設定檔
apache預設已有mod_rewire 模組: (httpd.conf 相關設定)
預設也已啟用.
LoadModule rewrite_module libexec/apache/mod_rewrite.so
AddModule mod_rewrite.c
用法: 在希望作用的資料夾下, 新增 .htaccess 檔案
RewriteCond: 表示新的規則開始
參數:
[NC] (不分字母大小寫)
[OR] (或者, 用來與下一規則連結用)
RewriteRule : 重新導向的規則
常用參數: (其他請自行參考apache手冊)
[R] 重新導向
[F] 重新導向到 403 forbidden 頁面
[L] 表示這是最後一條規則
常用到的規則表示式:
. 任何單一字母
[chars] chars字母中的其中一個
[^chars] 不包含 chars 的字母
? 0個或是1個字母
* 0個或是N個字母
+ 1個或是N個字母
^ 表示一行的開始
$ 表示一行的結束
跳脫字元(顯示符號本身)
常見的用法:
(A) 重新導向到正確的網址:
啟用二級功能變數名稱的伺服器配置
啟用二級功能變數名稱的伺服器配置
第一步,你需要為你的功能變數名稱添加泛解析。
以新網的功能變數名稱後臺為例,你進入新網的功能變數名稱管理面版後,添加一條A記錄。其中,“主機名”填寫為 * ,“指向”填寫為 你的伺服器IP。
第二步,設置伺服器支持泛功能變數名稱。
Apache 伺服器:
打開配置檔conf/httpd.conf 檔(linux主機該檔默認安裝在/usr/local/apache2/,win主機取決於您的apache安裝位置),添加一個虛擬主機配置(如下):
------------------------------
ServerAdmin yourmail@yourdomain.com
DocumentRoot 程式的伺服器目錄
ServerName yourdomain.com
ServerAlias *.yourdomain.com
------------------------------
注意,上面的 yourdomain.com 需要修改為你的功能變數名稱。 如使用三級功能變數名稱,則 yourdomain.com 修改為類似 home.yourdomain.com 這樣的形式
IIS 伺服器:
首先需要為e建立一個新站點,注意:如果該伺服器上還有其他站點,請為這些站點先設置好主機頭,否則二級功能變數名稱設置無效。
包括以下步驟:
e的站點主機頭必須為空
更改其他站點的主機頭,如果為空,則需要編輯更改主機頭為不空
進入e的管理後臺 -> 系統設置 裏面,將“啟用二級功能變數名稱支援”選項打開。並且在“二級功能變數名稱的根功能變數名稱”的文本框中填入你的功能變數名稱。比如 yourdomain.com
注意,不要填寫功能變數名稱前面的www。現在,二級功能變數名稱支持設置完畢了。設置三級功能變數名稱:將“根功能變數名稱”設置為類似 home.yourdomain.com 的形式
啟用Apache2 的mod_deflate(gzip)來壓縮網頁提高傳輸效能
在http.conf檔案裡有關載入模組的地方,加上這一行:
LoadModule deflate_module modules/mod_deflate.so
接著,在http.conf檔案後面,加上這一段:
<ifmodule mod_deflate.c>
DeflateCompressionLevel 9
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
AddOutputFilter DEFLATE js css
</ifmodule>
這樣的作法可以壓縮一般網頁中會用到的html、xml、php、css、js等格式檔案輸出,雖然會佔用掉伺服器處理器的一點點處理器時間,瀏覽者在接收網頁資料時也會消耗極短暫的一點點處理器時間(短到使用者不可能察覺),不過卻可以大幅減少資料傳輸量,減少網路頻寬被吃掉的情形。
•使用 mod_deflate 增進傳輸效能設定
•使用 mod_deflate 增進傳輸效能設定
先將 LoadModule deflate_module modules/mod_deflate.so 前面的 # 刪掉。
在檔案的最底下添加
<IfModule deflate_module>
DeflateCompressionLevel 9
AddOutputFilterByType DEFLATE text/html text/xml text/css application/x-httpd-php
AddOutputFilter DEFLATE html htm xml php css js
</IfModule>
DeflateCompressionLevel:表示壓縮的等級(1-9),其中 9 為最高等級,效能與壓縮率都要兼顧的情況建議設為 6。
AddOutputFilterByType:表示要壓縮的檔案,依照 MIME Type 來設定。
AddOutputFilter:表示要壓縮的檔案,依照副檔名來設定
•如果你是使用 WIN XP 作業系統的人,建議添加 Win32DisableAcceptEx 在檔案的最末端,因為 AcceptEx 這個提升網路效能的 API 指令可能會出錯。
設定分割 Log 檔案
這部分的設定不影響伺服器的運行,只是讓 Log 檔案按照時間來做分隔,以免產生一個過大的檔案。
使用 Apache 模組 Mod-log-rotate ,這不是由官方提供的模組,不過原始提供者並沒有製作編譯好的檔案方便 Windows 平台的使用者,感謝 Apache Lounge 提供編譯好的檔案使用( For Apache 2.0.X & 2.2.X )。
安裝設定方法如下:
1.將下載的 mod_log_rotate.so 複製到 Apache 的 modules 資料夾裡面。
2.開啟 httpd.conf 檔案,將以下的文句添加到檔案的最末端。
LoadModule log_rotate_module modules/mod_log_rotate.so
RotateLogs On
RotateLogsLocalTime On
RotateInterval 86400
RotateLogs:表示啟動模組的功能
RotateLogsLocalTime:表示使用本地時間,預設為 UTC 時間
RotateInterval: Set the interval in seconds for log rotation.(不清楚實際作用,其實不加也可以)
3.將 CustomLog "logs/access.log" common 修改成
CustomLog "logs/access_%Y_%m_%d.log" common
目前的設定是每天一個檔案。