Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 如何将本地IP地址读入.htaccess文件?_Apache_.htaccess - Fatal编程技术网

Apache 如何将本地IP地址读入.htaccess文件?

Apache 如何将本地IP地址读入.htaccess文件?,apache,.htaccess,Apache,.htaccess,我计划使用一个.htaccess文件,该文件可以部署在多台服务器上。在这个过程中,我在.htaccess文件中设置环境变量,在一些情况下,我希望将IP地址读取到设置中。例如,在一种情况下,我正在为本地数据库连接设置一个环境变量: SetEnv DBL "mysql:dbname=oars;host=192.168.101.1;port=3306" 然后在PHP中,我将读取变量以供数据库交互使用: define('DBL', getenv('DBL')); 由于我计划在多台服务器上部署,是否有

我计划使用一个
.htaccess
文件,该文件可以部署在多台服务器上。在这个过程中,我在
.htaccess
文件中设置环境变量,在一些情况下,我希望将IP地址读取到设置中。例如,在一种情况下,我正在为本地数据库连接设置一个环境变量:

SetEnv DBL "mysql:dbname=oars;host=192.168.101.1;port=3306"
然后在PHP中,我将读取变量以供数据库交互使用:

define('DBL', getenv('DBL'));

由于我计划在多台服务器上部署,是否有办法自动获取IP地址,而不是为每台服务器维护单独的.htaccess文件?

您可以使用规则设置Env变量:

RewriteEngine on
RewriteRule ^ - [E=DBL:mysql\:dbname=oars\;host=%{SERVER_ADDR}\;port=3306]

print getenv("DBL");
mysql:dbname=oars;host=1.2.3.4.5;port=3306

如果您想要MySQL的本地数据库连接,为什么不使用
127.0.0.1
?关于这一点,为什么不使用
localhost
和UNIX套接字而不是TCP/IP?由于我们系统的一些特性,我们不能使用localhost或127.0.0.1地址@quentinhith
SetEnv DBL“mysql:dbname=oars;host=%{SERVER\u ADDR};port=3306”
,这会引发一个错误@croies
SQLSTATE[HY000][2005]未知的MySQL服务器主机“{server\u ADDR}”(0)
Oh-wow!我不知道可以通过重写规则设置环境变量。真的大开眼界,工作完美。