我得到它的工作。
如果你有類似的問題,那麼你的Apache2文件000-default.conf(在你的Linux發行版上查找這個文件的位置)看起來像這樣。
<VirtualHost *:80>
DBDriver mysql
DBDParams "host=localhost,user=root,pass=password,dbname=name"
RewriteMap whitelist "dbd:SELECT ip FROM users WHERE ip = %h LIMIT 1"
<Directory /var/www>
RewriteEngine On
RewriteCond "${whitelist:%{REMOTE_ADDR}|FOUND}" "FOUND"
RewriteRule "^" "" [F]
</Directory>
...
</VirtualHost>
我們解釋一下這裏
RewriteMap whitelist "dbd:SELECT ip FROM users WHERE ip = %h"
參數%h表示請求IP地址,所以它不會使用來自SQL查詢的多個結果,但由於WHERE只會返回行當它滿足條件時,它可以用於任何數量的IP。
RewriteCond "${whitelist:%{REMOTE_ADDR}|FOUND}" "FOUND"
的:%{REMOTE_ADDR}搜索REMOTE_ADDR白名單中,這將很可能含有隻有當它被發現與SQL查詢的IP地址,否則它是空的。
RewriteRule "^" "" [F]
這裏[F]表示禁止,你可以將其設置爲例如[R]重定向,但你要回去看看如何使用它的更多信息,以及「^」是指這條規則適用於所有網址。
空的「」是Apache2在.txt地圖中預期的關鍵分隔符(?),但由於我們使用SQL查詢,因此我們在這裏沒有任何內容。
如果你想使用mod_dbd與MySQL,那麼你必須(在Debian 8例如)安裝一個軟件包
sudo apt-get install libaprutil1-dbd-mysql
或者以其他方式設置後的Apache2將不會啓動開始DBDriver到mysql
你必須也使mod_rewrite的和Apache2中mod_dbd
a2enmod rewrite
a2enmod dbd
希望它是有用的人:)