У меня есть веб-приложение.
Все запросы к моему приложению будут передаваться в 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), оно будет вызывать некоторые URL в моем WebApp (Весь день: 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 регистрировал URL-адреса:
1./?call=phpfile1.processSomething
2./?call=phpfile2.processSomethingElse
Я установил некоторые конфигурации в файле vhost, как это:
<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 все еще пишет лог для этих URL !!!
Так что, Любой, помогите мне !!!
Спасибо!
Здесь, в вашей конфигурации SetEnvIf Request_URI "^/?call=phpfile1.processSomething" dontlog
эта строка в формате
SetEnvIf атрибут регулярного выражения env-variable
Так что ваше регулярное выражение «^ /? Вызов = phpfile1.processSomething», в котором есть специальные символы, такие как ‘?’. Побег этих персонажей и изменить свое регулярное выражение на что-то вроде ^\/\?call=phpfile1\.processSomething(.*)
,
Не забудьте перезагрузить конфигурацию apache, перезагрузить или перезапустить сервер apache
Спасибо Нику и Таруну. Я решил свою проблему.
В моем .htaccess
файл, добавляю несколько конфигов:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^automate/phpfile1/(.*) ?call=phpfile1. processSomething&module=$1
RewriteRule ^automate/phpfile2/(.*) ?call=phpfile2.processSomethingElse&module=$1
</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