我需要从进入服务器的HTTP请求中删除cookie.在客户端(写入此cookie)或服务器(读取它)上执行此操作不是一种选择.我有Apache 2.0代理客户端和服务器之间的请求,所以我希望使用mod_rewrite在Apache中删除cookie.
我的问题是,有没有办法使用mod_rewrite从HTTP请求中删除某个cookie?
如果不能只删除一个 cookie,那么作为最后的手段从请求中删除所有 cookie?
如果mod_rewrite不是此任务的正确工具,我愿意接受有关如何完成此操作的其他建议.
我在apache2日志中收到此错误:
[Tue Apr 06 09:00:56 2010] [错误] [客户端ABCD]请求失败:URI太长(超过8190)
我可以更改哪些设置来增加此限制?
我想知道如果我将.htaccess文件内容移动到apache2的vhost文件中是否可以提高性能?
这是我的.htaccess的内容
Options +FollowSymLinks +ExecCGI
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_NAME} ^([^.]+\.[^.]+)$ [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
# we check if the .html version is here (caching)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
# no, so we redirect to our front web controller
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
如果这样做是个好主意,我应该在vhost声明中放置哪些内容?
谢谢!
我cURL用来测试一些RESTful API.其中一些API由Apache机器提供,并使用简单.httaccess文件通过用户/密码组合进行保护.
有没有办法为cURL提供用户名/密码组合作为参数?
我将一个庞大而复杂的网站变成了一个小型的单页网站,因此需要将用户从404重定向到index.html.
我把它放在.htaccess中:
ErrorDocument 404 /index.html
Run Code Online (Sandbox Code Playgroud)
如果您输入mydomain.com/lalalalala,则会重定向到主页内容(mydomain.com/index.html),但URL栏仍然显示为mydomain.com/lalalalala.
如何将404重定向到index.html并将URL重写为mydomain.com?
编辑:
我正在使用Bluehost.
我的网站中有一些子应用程序,例如:
http://server/app/subapp1
http://server/app/subapp2
Run Code Online (Sandbox Code Playgroud)
如何为每个目录生成不同的日志文件?
http://server/app/subapp1/log/access_log
http://server/app/subapp2/log/access_log
Run Code Online (Sandbox Code Playgroud) 我遇到了配置Apache和Tomcat的麻烦,这就是场景:
我有一个Apache Web Server,运行正常,我可以访问这个只需键入:
http://localhost
Run Code Online (Sandbox Code Playgroud)
此外,在这台主机中,我有一个Tomcat运行并正常工作; 我创建了一个迷你网络应用程序,文件在"prueba"目录中,我可以访问输入:
http://localhost:8080/prueba
Run Code Online (Sandbox Code Playgroud)
(我知道Apache在80端口运行,而Tomcat在8080运行)
我想要做的是通过Apache用户可以访问'pruebas'(在Tomcat上运行),我的意思是:
http://localhost/prueba
Run Code Online (Sandbox Code Playgroud)
我已经知道了很多这个,我认为有两种方法可以做到这一点,我已经决定启用代理模块(proxy和proxy_ajp,带有a2enmod),我也已经知道我必须编辑这个文件: sites-available/default,这是内容:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName 127.0.0.1
DocumentRoot /var/www
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /static/ !
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
.
.
.
Alias /static/ "/apache/www/"
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
但这没有正常工作:(
我不得不说,我尝试了很多改变,在这两行上,如:
ProxyPass /prueba ajp://localhost:8009/prueba
ProxyPassReverse /prueba ajp://localhost:8009/prueba
Run Code Online (Sandbox Code Playgroud)
要么
ProxyPass / ajp://localhost:8009/prueba
ProxyPassReverse / ajp://localhost:8009/prueba
Run Code Online (Sandbox Code Playgroud)
(每次我编辑文件,我都重启apache)
但是当我访问[http:// localhost/prueba /]时,我有:服务暂时不可用
有谁知道为什么?先谢谢你们.
Pd:我正在使用apache 2.2.17和tomcat6.
我的网站的error.log文件说
Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., referer: http://URL/TO/REFERER
Run Code Online (Sandbox Code Playgroud)
我的问题是,什么是LogLevel?我用谷歌搜索了它,但似乎我只是得到了关于java的东西.我们的网站是PHP.
更新
我添加LogLevel debug到apache2.conf并重新启动了apache但在错误日志中没有任何不同.
这个问题似乎与臭名昭着的2GB限制直接相关,我不确定这个问题是否是32位PHP问题.我已经看到与HTTP相关的注释不是为这样的大文件设计的.但是,在决定对迄今为止已证明有效的方法进行任何根本改变之前,我宁愿用尽这个方向.正如标题所示我需要上传> 2GB文件,迄今为止最大的3.8GB.我有一个使用jQuery-file-upload构建的表单,在这些大文件启动之前发送任何文件(都小于2GB)都没有问题.3.8GB一个从File-Upload上传可能需要5分钟,进度条完成100%.但是,上传后报告的错误是类型1,表明文件大小限制已被破坏.
如果我在上传期间监视服务器上的磁盘使用情况,它将具有以下示例属性:在上载之前,磁盘使用率为30%,随着上载继续,此使用量增加,31%,32%.... 45%,46%等等 但是,在2GB点附近,当客户端/浏览器文件上传继续时,磁盘使用率会下降到30%.当服务器磁盘使用量停止增加时,客户端可能只占上载的60%.然而,客户端仍然继续100%但未被服务器接受,因为磁盘状态永远不会减少30%.
我运行64Bit Ubuntu(最新)与Apache/2.2.22(Ubuntu)和PHP版本5.3.10-1ubuntu3.2经过多天的开关搜索解决方案我仍然无法在更改后上传3.8GB文件这么多设置.我将列出下面的那种变化,但在这个阶段我认为它可能是一个32位的PHP问题,所以如果有人可以建议值得关注的链接或解决方案值得尝试,我会很感激.
在Apache2中,我设置了以下内容:
- apache2.conf I've set Timeout to 900
- httpd.conf I've set LimitRequestBody to 0
- .htaccess in the file upload directory I've set:
- LimitRequestBody to 4939212390
- php_value upload_max_filesize 4831838208
- php_value post_max_size 4939212390
Run Code Online (Sandbox Code Playgroud)
在php.ini中我设置了以下内容:
- UPLOAD_MAX_FILESIZE 4831838208
- POST_MAX_SIZE 4939212390
- max_execution_time 120
- max_input_time 60
- memory_limit 128M
Run Code Online (Sandbox Code Playgroud)
如果我在服务器上运行以下操作,似乎PHP没有32位问题,但我不确定在这个阶段.
php -r "echo PHP_INT_MAX;"
9223372036854775807
Run Code Online (Sandbox Code Playgroud)
正如我所提到的,任何想法都将不胜感激.
更新:
已经解决了这个问题,所以感谢@BogdanBurim建议回归基础方法:
我已设法通过HTTP上传3.8 GB文件,并具有以下设置:
在Apache2中,我设置了以下内容:
- apache2.conf I've set Timeout to 900
- httpd.conf …Run Code Online (Sandbox Code Playgroud) 我试图解析我的apache2错误日志,我有点麻烦..它似乎没有匹配过滤器.我很确定时间戳是错误的,但我不确定,我真的找不到任何文件来解决它.另外,有没有办法让fields.errmsg我得到什么@message?
日志
[Wed Jun 26 22:13:22 2013] [error] [client 10.10.10.100] PHP Fatal error: Uncaught exception '\Foo\Bar'
Run Code Online (Sandbox Code Playgroud)
托运人配置
input {
file {
'path' => '/var/log/apache2/*-error.log'
'type' => 'apache-error'
}
}
filter {
grok {
type => "apache-error"
pattern => "\[%{HTTPDATE:timestamp}\] \[%{WORD:class}\] \[%{WORD:originator} %{IP:clientip}\] %{GREEDYDATA:errmsg}"
}
}
output {
stdout {}
redis {
'data_type' => 'list'
'host' => 'logstash.server.net'
'key' => 'logstash'
}
}
Run Code Online (Sandbox Code Playgroud)