我需要一个mod_rewrite规则,将所有请求发送到index.php,除非请求是针对/ media /文件夹中的任何内容。 我有一个lighttpd类似的规则,但我不知道正则expression式/ mod_rewrite更改为Apache。 url.rewrite-once = ( "/(media)/(.*)" => "/$1/$2", "^([^\?]*)(\?(.+))?$" => "/index.php?url=$1&$3", ) 谢谢
这是我的httpd.confconfiguration了虚拟主机: NameVirtualHost *:80 <VirtualHost *:80> ServerName http://foo.baz.in DocumentRoot /var/www/foo/ </VirtualHost> <VirtualHost *:80> ServerName http://bar.baz.in DocumentRoot /var/www/ </VirtualHost> 第二个虚拟主机是一个WordPress的博客,在根目录下configuration了.htaccess和index.php(即/ var / www),其余的文件在wordpress自己的文件夹中。 然而,第一个虚拟主机是一个“战争”文件,当我转到foo.baz.in ,我看到目录列表,包含战争。 我也尝试将DocumentRoot更改为/ var / www / foo / foo.war,但是出现错误 Restarting web server: apache2Warning: DocumentRoot [/var/www/foo/foo.war] does not exist 我也改变了战争的所有者和许可,以www-data:www-data并将权限更改为755,但无济于事。 我如何让Apache部署我的“战争”? 谢谢。
我正在调查基于名称的虚拟主机在apache下的configuration,用于configuration主域及其子域。 我在网上find了一个例子 ,build议如下configuration: Listen 80 NameVirtualHost * <VirtualHost *> ServerName www.domain.com DocumentRoot /home/httpd/htdocs/ </VirtualHost> <VirtualHost *> ServerName subdomain.domain.com DocumentRoot /home/httpd/htdocs/subdomain/ </VirtualHost> 这是有道理的,直到DocumentRoot指令。 我是否正确地说,让一个虚拟主机的文档根,另一个虚拟主机的后裔是不明智的? 这种configuration是否意味着“子域”目录将服务器上的内容在两个域?
我试图使用基于名称的虚拟主机设置一个子域,根据这个问题的configuration格式。 据我所知,这个: 最后,可以通过在容器中放置其他指令来微调虚拟主机的configuration。 大多数指令都可以放在这些容器中,然后只更改相关虚拟主机的configuration。 要确定是否允许某个指令,请检查该指令的上下文。 在主服务器上下文(在任何容器之外)中设置的configuration指令只有在不被虚拟主机设置覆盖时才会使用。 应该意味着从单个主机移动到1个主机+ 1个子域的任务应该相当简单。 但是,当我添加VirtualHost指令时,我遇到了问题。 首先(和相当灾难性的)是主域的主页返回403(禁止)。 以下任一情况可能导致: 现有的主域有一个很大的configuration文件,有很多设置。 我将虚拟主机指令放在httpd.conf末尾附近,就在虚拟主机的注释指令之后 在VirtualHost之后的文件中有很多Redirect和Rewrite – 它们会发生冲突吗? 我已经把绝对的最低限度放在了VirtualHost指令中,因为我希望尽可能简单。 将旧的httpd.conf的内容移动到一个单独的文件(例如main-domain.conf)会更好吗?将其Include在一个VirtualHost并为子域创build一个单独的conf文件,包括在第二个VirtualHost指示? 最后,是否有任何简单的方法来debugging,记住我正在使用一个活的网站,所以任何变化都必须非常快速地进行testing! 更新 好的,错误是,更具体地说: 目录索引被规则禁止 其他页面似乎工作正常,所以它必须是从主页redirect的某种问题。 我想这就是为什么我问是否有已知的VirtualHost设置和Redirect s / Rewrite之间的冲突。 如果一个与VirtualHost块中的DocumentRoot匹配的<Directory "/path/to/docroot">块在后者之前或之后(或者没有关系)? 更新2 好的,所以看起来好像没有发生以下redirect: RewriteRule ^/$ /path/to/something/else [PT] 我猜的原因有两个: 当前的configuration甚至没有尝试处理这个重写过程。 该规则本身位于VirtualHost块之后的Include d文件中。 该规则不再匹配,因为VirtualHost指令导致模式匹配失败。 对我来说,这似乎是最有可能的… 更新3 任何人都认为这可能是相关的? 请注意,默认情况下,重写configuration不会被inheritance。 这意味着您需要为每个您希望使用它的虚拟主机启用RewriteEngine on指令。 换句话说,这是否意味着我需要: <VirtualHost *:80> RewriteEngine on </VirtualHost> 对于需要处理Rewrite *的每个VH,而不是仅仅依赖全局包含文件中的RewriteEngine on […]
我已经设置了一个公钥来自动为我的用户在远程服务器上login。 所以这是从cli运行没有任何问题: rsync -r -a -v -e "ssh -l user" –delete ~/local/file 111.111.11.111:~/remote/; 但是,当我尝试从PHP脚本(在本地服务器的网页上)运行相同的操作时: $c='rsync -r -a -v -e –log-file=FILE "ssh -l user" –delete ~/local/file 111.111.11.111:~/remote/'; //exec($c,$data); passthru($c,$data); print_r($data); 这是我收到的: 2011/01/23 19:18:29 [6401] rsync: connection unexpectedly closed (0 bytes received so far) [sender] 2011/01/23 19:18:29 [6401] rsync error: unexplained error (code 255) at io.c(601) [sender=3.0.7] […]
注意:这和这个SOpost是一样的 ,但在这里可能更合适,因为我怀疑问题是服务器configuration相关而不是代码相关。 我正在使用通过mod_fcgid运行PHP的LAMP设置。 对于大多数请求来说,这样做效果不错,但是我注意到,当我下载一个文件,但在下载完成之前中断下载,服务于文件块的php-cgi进程试图写入更多的数据,直到达到IPCCommTimeout 。 一旦达到超时,进程就会中断,进程再次开始为其他请求提供服务。 如果我使用mod_php而不是mod_fcgid则不会发生此问题。 有没有一些可用的设置fcgid,我可以设置让它中止,如果没有捕获输出? 有什么我可以用PHP来处理吗? 如果下载不中断,则不会发生该问题; 实际上,我只注意到它,因为我试图使用gddflvplayer来stream式传输FLV文件,它似乎发送一个简短的请求来获取前几帧(它显示为预览),然后是另一个播放它,这是因为一样的问题。 仅供参考,这是挂cgi过程的strace; 它一直这样坐直到它最终被中断,大概是当IPCCommTimeout到达时进程pipe理器。 我的猜测是它试图输出readfile()调用的结果,但是Apache不再监听(因为请求已被用户取消)。 root@some-machine:~# strace -p 24837 Process 24837 attached – interrupt to quit write(3, "\5|A\313%\35\337\376\275\237\230\266\242\371\37YjzD<\322\215\357\336:M\362P\335\242\214\341"…, 17432 日志表明由于超时而最终收到请求 mod_fcgid: read data timeout in 240 seconds 下载代码或多或less只是使用readfile来提供文件,还包含一些头文件(注意:在这个代码中, Header或多或less只是header()以避免testing中的问题header()的包装)。 $filepath = '/some/path/foo.flv'; $filename = 'foo.flv'; $disposition = 'inline'; $h = Header::get(); $h->send('Pragma: public'); $h->send('Content-Transfer-Encoding: binary'); $h->send('Content-type: […]
我想测量生产环境的合理压力testing结果。 如何通过分析apache日志来衡量req / sec? APACHE2.2 LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %D" combined 我可以用%t和%D参数吗?
对不起,以前不清楚。 我们有一个VMware虚拟化服务器实例,这是我们的主要生产服务器。 我在近百个独特的顶级域名上存储了一系列基于Web的应用程序。 为了提供网页,我们使用LAMP堆栈。 此服务器运行我们的主要和辅助DNS服务器(在两个不同的IP地址比用于服务Web内容)。 最后,我们还使用exim(我相信)托pipe我们的邮件(pop和smtp)。 最近我们遇到了问题,导致我们的root fs变成只读,从而阻止了apache2或mysql连接,并阻止了传入的电子邮件。 基本上减less了成千上万的客户端的networking存在和电子邮件。 这个问题的性质(仍然不受控制)并没有影响到这个问题,所以DNS仍然没有问题。 从那以后,我们开始将生产网站和相关的mysql数据库镜像到辅助服务器上。 这台服务器已经完全准备好了。 我的问题是 ,如果我们的主生产服务器上的apache发生故障(因为某种原因)很快(如果不是自动的话)开始将stream量尽可能无缝地转发到辅助服务器,那么推荐的故障转移方法是什么? 由于我们不希望在两台服务器上进行负载,实际上我们只希望次服务器在主服务器不响应的情况下接收http请求,所以我们不希望使用DNS round robing。 这部分是因为我们的镜像过程是一种方式,对辅助服务器的改变会反映在主服务器中,甚至丢失。
如何configuration我的apache实例,只需要在浏览器中加载* .java文件,而不是将其作为下载文件发送给我?
我正在将一个WordPress的博客从一个基于Apache的networking服务器转移到一个基于Nginx的networking服务器 。 简单的步骤,我想: 来源WordPress文件夹的scp(在本例中为/var/www/example.com),该文件被传输到远程Web服务器上的同名文件夹。 没问题。 源WordPress数据库的mysqldump。 没问题。 在nginxnetworking服务器上,我创build了一个数据库(与源数据库名称相同,只是为了保持一切)。 我设置了一个默认的WP博客,看看现在是否一切正常。 我创造一个适当的 /etc/nginx/sites-available/example.comconfiguration文件(当然还有链接到启用网站的链接)。 那 configuration文件指向一个不同的文件夹(/ var / www / exampletemp) 修改我的Windows主机文件,以testing我感兴趣的域上的新博客。example.com的博客显示罚款,当然默认WP博客,但有正确的URL。 然后是关键的步骤。 首先,我编辑/etc/nginx/sites-available/example.com,以便现在指向真正的备份文件夹(/var/www/example.com) – >(只需更改根位置和fastcgi指令)。 然后我创build另一个数据库,恢复这个新的源数据库,编辑/ var / 我能得到什么? 一个华丽,美丽的 “错误310:太多redirect”:( 我可以在www.example.com/wp-login.php上看到login页面,但是我的源用户不工作,我无法访问WordPress仪表板。 我已经从phpMyadmin修改了一个pipe理员帐号,设置了一个新的密码,并select了MD5encryption,尽pipe当我从Apache转移到Apache或Nginx到Nginx时,这个工作起作用了。 我真的不明白为什么有太多的redirect错误。 我尝试禁用所有插件(将/ wp-content / plugins重命名为/ wp-content / oldplugins,或者用SQL查询禁用所有插件),但是再次运气不佳。 对不起,很长的问题。 我希望我已经说清楚了 编辑:这是nginxconfiguration文件,以防万一:) server { listen 80; server_name www.example.com; rewrite ^/(.*) http://example.com/$1 permanent; } server { […]