如何让 Apache 停止记录我的一些网址
How to make Apache stop log some my Urls
我有一个 Web 应用程序。
对我的应用程序的所有请求都将传递给 Root/index。php。
示例:
1. http://myapp.com/?call=phpfile1.processSomething¶m1=x¶m2=y
2. http://myapp.com/?call=phpfile2.processSomethingElse
3. http://myapp.com/?call=phpfile3.methodXYZ...
我还有另一个应用程序 (WindowServices),它会在我的 WebApp 中调用一些 Urls(全天 :v)。当我打开 access.log 时,它是这样的:
[2018-08-07 12:23:43] "GET /?call=phpfile1.processSomething&module=5 HTTP/1.1" 200 16
[2018-08-07 12:23:43] "GET /?call=phpfile2.processSomethingElse&module=2 HTTP/1.1" 200 16
[2018-08-07 12:23:43] "GET /?call=phpfile1.processSomething&module=0 HTTP/1.1" 200 16
[2018-08-07 12:23:43] "GET /?call=phpfile1.processSomething&module=7 HTTP/1.1" 200 16
[2018-08-07 12:23:43] "GET /?call=phpfile2.processSomethingElse&module=4 HTTP/1.1" 200 16
[2018-08-07 12:23:43] "GET /?call=phpfile2.processSomethingElse&module=3 HTTP/1.1" 200 16
而且...access.log 文件会随着时间的推移变大。
所以,我不想要 Apache 登录 Urls:
1./?call=phpfile1.processSomething
2./?call=phpfile2.processSomethingElse
我在虚拟主机文件中设置了一些配置,如下所示:
<VirtualHost *:80>
DocumentRoot "D:\MyFolderApp"
<Directory "D:\MyFolderApp">
AllowOverride All
Order allow,deny
Allow from all
DirectoryIndex index.php index.html
Require all granted
</Directory>
ServerName myapp.com
SetEnvIf Request_URI "^/?call=phpfile1.processSomething" dontlog
SetEnvIf Request_URI "^/?call=phpfile2.processSomethingElse" dontlog
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog "logs/myapp.com-access.log" common env=!dontlog
</VirtualHost>
但是 Apache 仍然为这些 Urls 写日志!!!
所以,谁能帮帮我!!!
谢谢!
在你的配置 SetEnvIf Request_URI "^/?call=phpfile1.processSomething" dontlog
中,这一行的格式是
SetEnvIf 属性正则表达式环境变量
所以你的正则表达式是 "^/?call=phpfile1.processSomething",其中有像 '?'[=22 这样的特殊字符=].转义这些字符并将正则表达式更改为 ^\/\?call=phpfile1\.processSomething(.*)
之类的内容。
Do remember to reload your apache configuration, reload or restart your apache server
感谢尼克和塔伦。我解决了我的问题。
在我的 .htaccess
文件中,我添加了一些配置:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^automate/phpfile1/(.*) ?call=phpfile1. processSomething&module=
RewriteRule ^automate/phpfile2/(.*) ?call=phpfile2.processSomethingElse&module=
</IfModule>
在我的 httpd-vhosts.conf
文件中,我设置如下:
SetEnvIf Request_URI "^/automate/phpfile1/" dontlog
SetEnvIf Request_URI "^/automate/phpfile2/" dontlog
CustomLog "logs/myapp.com-access.log" combined env=!dontlog
所以,apache 不记录 Uris :D
我有一个 Web 应用程序。
对我的应用程序的所有请求都将传递给 Root/index。php。 示例:
1. http://myapp.com/?call=phpfile1.processSomething¶m1=x¶m2=y
2. http://myapp.com/?call=phpfile2.processSomethingElse
3. http://myapp.com/?call=phpfile3.methodXYZ...
我还有另一个应用程序 (WindowServices),它会在我的 WebApp 中调用一些 Urls(全天 :v)。当我打开 access.log 时,它是这样的:
[2018-08-07 12:23:43] "GET /?call=phpfile1.processSomething&module=5 HTTP/1.1" 200 16
[2018-08-07 12:23:43] "GET /?call=phpfile2.processSomethingElse&module=2 HTTP/1.1" 200 16
[2018-08-07 12:23:43] "GET /?call=phpfile1.processSomething&module=0 HTTP/1.1" 200 16
[2018-08-07 12:23:43] "GET /?call=phpfile1.processSomething&module=7 HTTP/1.1" 200 16
[2018-08-07 12:23:43] "GET /?call=phpfile2.processSomethingElse&module=4 HTTP/1.1" 200 16
[2018-08-07 12:23:43] "GET /?call=phpfile2.processSomethingElse&module=3 HTTP/1.1" 200 16
而且...access.log 文件会随着时间的推移变大。
所以,我不想要 Apache 登录 Urls:
1./?call=phpfile1.processSomething
2./?call=phpfile2.processSomethingElse
我在虚拟主机文件中设置了一些配置,如下所示:
<VirtualHost *:80>
DocumentRoot "D:\MyFolderApp"
<Directory "D:\MyFolderApp">
AllowOverride All
Order allow,deny
Allow from all
DirectoryIndex index.php index.html
Require all granted
</Directory>
ServerName myapp.com
SetEnvIf Request_URI "^/?call=phpfile1.processSomething" dontlog
SetEnvIf Request_URI "^/?call=phpfile2.processSomethingElse" dontlog
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog "logs/myapp.com-access.log" common env=!dontlog
</VirtualHost>
但是 Apache 仍然为这些 Urls 写日志!!!
所以,谁能帮帮我!!! 谢谢!
在你的配置 SetEnvIf Request_URI "^/?call=phpfile1.processSomething" dontlog
中,这一行的格式是
SetEnvIf 属性正则表达式环境变量
所以你的正则表达式是 "^/?call=phpfile1.processSomething",其中有像 '?'[=22 这样的特殊字符=].转义这些字符并将正则表达式更改为 ^\/\?call=phpfile1\.processSomething(.*)
之类的内容。
Do remember to reload your apache configuration, reload or restart your apache server
感谢尼克和塔伦。我解决了我的问题。
在我的 .htaccess
文件中,我添加了一些配置:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^automate/phpfile1/(.*) ?call=phpfile1. processSomething&module=
RewriteRule ^automate/phpfile2/(.*) ?call=phpfile2.processSomethingElse&module=
</IfModule>
在我的 httpd-vhosts.conf
文件中,我设置如下:
SetEnvIf Request_URI "^/automate/phpfile1/" dontlog
SetEnvIf Request_URI "^/automate/phpfile2/" dontlog
CustomLog "logs/myapp.com-access.log" combined env=!dontlog
所以,apache 不记录 Uris :D