我正在尝试使用mod_rewrite创build一个restful API。 我有规则: RewriteRule v2/(.*)$ v1/index.php?request=$1 [QSA,NC,L] 然而,path可能包含base64编码的string(即可以有+或/),它们在PHP到达之前被解码。 例如,如果我去 /v2/cards/9VwQLli%2Bf0ogFl19AVRFLuztbp8cP0rYCgXBu3H9%2BDc%3DBe PHP获取$_REQUEST['request'] as cards/9VwQLli f0ogFl19AVRFLuztbp8cP0rYCgXBu3H9 Dc=Be' 。 而更糟的是,如果我在那里添加一个斜线(例如9VwQLli%2Bf0ogFl19AVRFLuztbp8c%2FP0rYCgXBu3H9%2BDc%3DBe – %2F是斜杠),我得到一个404。 我怎样才能防止这种情况发生? 注意:我尝试了B和NE标志,但没有任何效果。 我想作为一个黑客,我可以只将所有+字符转换为_和所有/转换,或者甚至可能是双重url编码,但我想知道是否有更好的方法。
如果我们有一个有10个IP地址的服务器,有没有一个干净的方法可以在每个发出的请求中随机select一个作为源IP? 我尝试了Apache Mod Proxy,但显然即使我通过脚本自动更改源IP地址,每次我都要重新加载Apache。 有什么工具或清洁方法可以处理这个? 编辑:更多信息 在服务器上托pipe多个客户, 他们中的很多人正在调用相同的API(使用cURL),每秒限制速率为2,所以基本上当客户发送2个请求时,其他人无法获得! 我试图在每个请求(这里的问题)上随机轮换服务器“传出IP地址(源IP)”,或者为每个主机分配一个专用的“OUTGOING”IP(这不是问题)。
我认为我的系统是使用logrotate旋转日志,包括httpd日志 “当前”文件logging在这里/ var / log / httpd /但我只看到最后5天(我认为) 但是我怎么能find以前的日志文件存在的地方。 我以为它们是和现在一样被创造出来的。 我一直在环视,但没有得到任何明智的,任何人谁可以帮助我? 提前致谢, 短发
如何在apache2中设置监听https请求? 我的一个虚拟主机有一个forms: <VirtualHost *:80> ServerName central DocumentRoot /var/www4 … </VirtualHost> 我应该如何修改我的virtual-host-config的这个提取来启用apache来监听https? 我需要它,因为我的网站应该在login时发送https POST请求。 我试过改变开始标签: <VirtualHost *:80 *:443> …,但没有奏效。 有任何想法吗?
在Apache2 / Ubuntu上托pipe的Ruby on Rails应用程序中,需要采取什么措施来设置SSL?
我的Apache服务器有一个很奇怪的问题。 我有两个文件包含<?php phpinfo(); ?> <?php phpinfo(); ?> 。 它们都放在同一台服务器上,但是在不同的虚拟主机上。 虚拟主机看起来像这样: 第一: <VirtualHost *:80> DocumentRoot /var/www/[…]/public_html ServerName something <Directory /> AllowOverride All </Directory> </VirtualHost> 第二个: <VirtualHost *:80> DocumentRoot /var/www/[…]/public_html ServerName something ServerAlias something <Directory /> AllowOverride All </Directory> </VirtualHost> 如你所见,他们几乎是平等的。 但是,如果我指向第二个虚拟主机上的phpinfo.php,源将被发送到客户端。 在第一个phpinfo被执行并显示给用户成功。 什么会导致这种差异?
如何创build一个只匹配没有查询string的请求的重写规则? http://www.mysite.com/index.php 应重新映射到: http://www.mysite.com/ 但 http://www.mysite.com/index.php?page=some_page 应该一个人留下。 我正在尝试这个: RewriteRule ^/index.php$ http://www.mysite.com/ [R=301,L] …但是它匹配以/index.php开始的任何内容,即使我已经明确地以一个美元符号结束了这个模式。 更新: 这之前唯一的规则是: RewriteCond %{HTTP_HOST} ^mysite.com [NC] RewriteRule ^/(.*) http://www.mysite.com/$1 [R=301,L] 目的是将非www链接redirect到www版本。
我创build了一个名为“rewrite”的testing目录,并将一个.htaccess文件与一个重写规则放在一起。 当我通过浏览器访问该URL时,出现500内部服务器错误。 所以我认为这是我的重写语法,并尝试了一些改变,同样的事情。 然后我用每行的#号注释掉了所有的东西。 一样。 然后我注意到该目录不显示在其父目录(其中没有索引文件)。 所以然后我试着改变文件名.htaccess_bad ,目录显示。 然后我把它改回.htaccess并清空文件,所以它是一个空白的文件。 该目录仍然显示。 最后,我添加了一个#到.htaccess文件,然后中提琴,目录再次消失。 我虽然问题可能是父目录有一个.htaccess文件在其重写规则的[R]标志,但删除没有解决问题。 任何帮助什么尝试下一步或为什么发生这种情况? 快速更新: 即使有一个换行符也会导致问题。 (所以它必须真正是空的,似乎)。
我正在研究在Ubuntu或Debian中构build一个灯服务器。 我所看到的几乎所有的东西都build议从源代码构build,对所有组件进行chroot以及安全和最新的版本。 对于特定的软件包(Apache,MySQL,PHP),我会更好地坚持使用debian / ubuntu包吗? 客户端对于微软产品来说是相当顽固的,这是在这家公司大力使用linux的第一次尝试,所以我希望能够向pipe理层介绍一些非常可靠的东西。
我怎样才能使用mod_rewrite删除后的一切? (问号)在一个URL? 例如:http:// 127.0.0.1/ALL_FILES.php?test=1 mod_rewrite之后:http:// 127.0.0.1/ALL_FILES.php 对于PHP来说,这意味着$ _GET超级全局将始终为空。 谢谢。