我正在使用HAProxy在80上侦听向节点服务器(端口:3000)或PHP服务器(4000)发送请求;我也有CSF安装有端口3000和80可用.

当我浏览http://example.com/forum/1/page.PHP上的一个页面时,它可以正常工作,但有时候当我不小心输入example.com/forum/1(没有尾随斜线)时,它会不断加载,最终导致到错误页面ERR_CONNECTION_TIMED_OUT.地址栏显示已将其重定向到http://example.com:4000/forum/1/.

由于我没有打开4000端口,所以当我继续多次访问example.com/forum/1时,它将会被CSF触发一个块.我的问题是,我可以将所有指向实际文件夹example.com/forum/1(无拖尾斜杠)的请求重定向到404页面吗?我已经尝试添加一个重写规则,为每个请求附加一个斜杠,但这会破坏我的所有相对路径(请参阅我在post的问题).

所以我想知道的是,为什么我从http://example.com/forum/1重定向到http://example.com:4000/forum/1/?是否由HAproxy引起?

一些HAproxy配置:

frontend all 0.0.0.0:80
    timeout client 1h
    # use apache2 as default webserver for incoming traffic
    default_backend apache2

backend apache2
    balance roundrobin

    option forwardfor
    server apache2 myIpAddress:4000 weight 1 maxconn 1024 check 

    # server must be contacted within 5 seconds
    timeout connect 5s
    # all headers must arrive within 3 seconds
    timeout http-request 3s
    # server must respond within 25 seconds. should equal client timeout
    timeout server 25s

这是我的重写规则:

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^ - [L]

RewriteCond %{REQUEST_URI} !^.*\.(jpg|css|js|gif|png)$[NC]
RewriteCond %{REQUEST_FILENAME}.PHP -f
RewriteRule !.*\.PHP$%{REQUEST_FILENAME}.PHP [QSA,L]

RewriteCond %{THE_REQUEST} /index\.PHP [NC]
RewriteRule ^([^\.]+)$$1.PHP [NC,L]
由于/ forum / 1是一个有效的物理目录,由于此设置,您将被重定向到/ forum / 1 /
DirectorySlash On

它被称为mod_dir的模块用于在目录之后添加尾部斜杠(如果缺少).

您当然可以使用以下命令关闭此标志:

DirectorySlash Off

但是be aware of security implications.

为了更安全,您还需要:

Options -Indexes

关闭目录列表.

安全警告(从链接手册复制)

关闭尾部斜线重定向可能会导致信息泄露.考虑mod_autoindex处于活动状态(Options Indexes),DirectoryIndex设置为有效资源(例如,index.html),并且没有为该URL定义其他特殊处理程序.在这种情况下,带有尾部斜线的请求将显示index.html文件.但是没有拖尾的请求将列出目录内容.

更新:回答这一部分问题:

My question is,can I redirect all the requests that are pointing to an actual folder example.com/forum/1 (no trailing slash) to an 404 page?

您可以在/forum/1/.htaccess中使用此代码:

DirectorySlash On
RewriteEngine On

RewriteRule ^$- [L,R=404]

这将强制一个尾部的斜线,以便重写规则可以用来发送404错误.

php – 当url指向一个现有的文件夹(没有尾部斜杠)时,如何重定向到404. HAproxy或mod-rewrite相关的更多相关文章

  1. 简洁自适应404页面HTML好看的404源码

    这篇文章主要介绍了简洁自适应404页面HTML好看的404源码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. ios – 将iphone应用程序重定向到苹果商店

    我有一个iPhone应用程序,当有可用的升级时,我想提示用户升级,如果他们点击升级,我想将它们重定向到苹果商店.这是怎么做到的?

  3. ios – Oauth突然无法使用iphone(仅安装了FS应用程序)

    我们的iPhone应用程序允许通过oauth通过Foursquare登录.它工作正常,最近停止工作.我们得到的错误是:连接失败:回调uri对此使用者无效.但是,如果用户没有在手机上安装foursquare应用程序,它可以像以前一样正常工作.似乎FS现在正在进行重定向来处理FS应用程序内部的oauth,并且在尝试返回到原始应用程序时失败.通过野生动物园它似乎工作.这是在ios9上.解决方案?

  4. ios – 以http无效的自定义URL方案开头

    我在应用程序中使用了自定义URL方案.我成功地从safari重定向到我的应用程序.就像我已经制作了URL方案“appname”.请检查http://prntscr.com/2cjx0p.我需要使用像iosurlredirectfrommailtoapp这样的解决方案,但我不确定如何设置cookie.我发现我必须首先在我的应用程序中为服务器“http://myappname.com”设置一个cook

  5. ios – NSURLProtocol的抽象方法

    我一直在我的应用程序中使用自定义NSURLProtocol来检测资源并从缓存目录加载(如果可用),或重定向回我的应用程序的服务器.但是,我发现缺少抽象方法的文档,我不知道如何处理我们需要实现的一些抽象方法.我们必须实施:canInitWithRequest很简单,这就是告诉NSURLProtocol您将响应此请求的方式.我不知道如何处理canonicalRequestForRequest:在sta

  6. ios – NSURLRequest:如何处理重定向的帖子?

    没有收到连接响应.处理重定向的相关iOS方法是,根据Apple的文档,如果代理没有实现连接:willSendRequest:redirectResponse:,所有规范更改和服务器重定向都是允许的.那么这不是我的经验,因为离开这个方法不适合我.该请求只是挂起没有响应.苹果还建议执行willSendRequest,这对我来说不起作用.我看到了调用,但结果的请求只是挂起.我当前执行的willSendRequest如下(见下文).这遵循重定向,但是处理请求就像是GET,而不是POST.我相信问题是重定向失去了H

  7. ios – Safari Web检查器不显示重定向

    我试图通过mc书上的safariwebinspector调试网络流量,但是我无法看到重定向的请求响应流量.让我们说A页重定向到B,重定向到C.在检查员中,我可以看到请求到页面A与站点C的响应数据,但我看不到中间发生了什么.在chrome中,我可以看到所有的重定向,因为我应该,但是我不能使用chrome,因为我想调试iphone模拟器.是否有可能配置safari检查员显示重定向?解决方法目前,您无法在Safari的WebInspector实用程序中查看重定向.#SuperSad

  8. ios – 在302重定向之后,AVPlayer无法为同一个域发送cookie

    有没有办法解决这个问题?请分享你的想法.解决方法制作一个演示该问题的示例,提交错误报告.然后创建一个提到雷达的DTS事件,并且您正在寻找一个解决方案,以便您认为是一个错误.这打开了两种可能性:>工程师可以确认错误–如果不知道他们会修复它,如果它是重复的,您可以请求原始状态信息>DTS具有足够的知识,有能力查询实际的AV工程师如何解决这个问题这样你就可以花更少的时间找到可能不会得到任何其他答案的地方.

  9. ios – 禁用WKWebView打开链接以重定向到我的iPhone上安装的应用程序

    当我搜索google并点击Etsy.com作为例子,WKWebView重定向到我的iPhone上安装的Etsy应用程序.如何禁用此行为?

  10. 在构建Xcode项目时可以转储AST吗?

    我一直在使用他们的AST来分析Swift项目,我想知道在使用Xcode构建Swift项目时是否可以生成它.现在,当对单个文件和简单项目运行swiftc-dump-ast命令时,我可以在终端上打印AST.然而,当将它用于更复杂的项目时变得更加困难.因此,我想使用xcode.我已经尝试将-dump-ast标志传递给BuildSettings>中的编译器.Swift编译器–自定义标志>其他Swift旗.

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部