使用mod_rewrite我可以构造一个规则来响应一个干净的错误代码(例如,404没有find,410没有或403未经授权),当一个页面被请求,我不想服务。 但是我经常得到来自黑客扫描我的网站漏洞或可能跨站脚本尝试的完全错误的请求。 对于这些客户,我不想返回一个干净的错误 – 我宁愿做一些其他事情,如立即删除连接没有响应,或者,保持连接打开很长一段时间挫败自动化过程。 任何想法如何用Apache来实现这个? 我读过nginx能够立即终止一个特定的模式匹配连接。
我有一个博客。 博客存储在我网站的/blog/前缀下。 它具有通常的博客URL,因此文章的URL格式为/blog/:year/:month/:day/:title/ 。 首先,我想自动将访问者redirect到www子域(以防他们离开),并在内部将根URL重写为/blog/ ,以便博客的首页出现在站点的首页。 我用.htaccess文件中的下列一组重写规则完成了这个工作: RewriteEngine On # Rewrite monkey-robot.com to www.monkey-robot.com RewriteCond %{HTTP_HOST} ^monkey-robot\.com$ RewriteRule ^(.*)$ http://www.monkey-robot.com/$1 [R=301,L] RewriteRule ^$ /blog/ [L] RewriteRule ^feeds/blog/?$ /feeds/blog/atom.xml [L] 这工作正常。 问题是,博客的首页现在出现在两个不同的URL: /和/blog/ 。 所以我想将 /blog/ URL redirect到根URL。 最初我试图用以下一组重写规则来实现这一点: RewriteEngine On # Rewrite monkey-robot.com to www.monkey-robot.com RewriteCond %{HTTP_HOST} ^monkey-robot\.com$ RewriteRule ^(.*)$ http://www.monkey-robot.com/$1 [R=301,L] RewriteRule ^$ /blog/ […]
我有数百个dynamic创build的url – foo.com/123,foo.com/contact等 我想redirect所有这些url(不知道所有这些,只知道有az或1-9)只是foo.com。 请让我知道如何使用Apache重写规则可以做到这一点 我曾尝试: RewriteRule ^(.*)$ index.php 但是这不起作用。
在我的共享主机服务器(Hostmonster)上,我设置了django(实际上是pinax),这样一个.htaccess mod_rewrite规则会将请求重写为一个pinax.fcgi文件: RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ pinax.fcgi/$1 [QSA,L] 我想要做的是有一个不同的pinax.fcgi文件被调用,取决于使用的域(或子域),如下所示: RewriteCond %{HTTP_HOST} ^subdomain\.domain\.com$ [NC] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ pinax2.fcgi/$1 [QSA,L] RewriteCond %{HTTP_HOST} ^domain\.com$ [NC] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ pinax.fcgi/$1 [QSA,L] 这存储在我的ROOT public_html文件夹(不是在public_html /子域/文件夹).htaccess文件,但不幸的是只是导致内部redirect错误。 我如何编写这些规则,以便他们为不同的域使用不同的fcgi文件?
我们在document_root目录下的.htaccess如下所示: RewriteEngine on RewriteRule ^posts/1/first-post-title$ /posts/1.html [L] RewriteCond %{REQUEST_URI} ^/posts/1 RewriteCond %{REQUEST_URI} !/^posts/1/first-post-title$ RewriteRule (.*) posts/1/first-post-title [R=301,L] 该configuration的devise使得以下URL将全部指向“ http:// localhost / posts / 1 / first-post-title ”: “ http:// localhost / posts / 1 ” “ http:// localhost / posts / 1 / wrong-title ” “ http:// localhost / posts / 1 / first-post-title ” […]
所以 – 我用mod重写了几千次来改变url.tld / show / season / 1来加载video.php?show = someshow&season = 1。 但是 – 现在我需要做相反的事情,显示一个临时的HTML页面,而不是在这些页面上提供PHP。 myshows.com/seasons/?sid=1 我试过做一个重写cond包括?,但似乎从来没有工作。 RewriteRule ^ / seasons / \?sid = 1 migrating.html 编辑我需要确保唯一的页面是SID = 1,而不是任何其他可能的季节ID 有任何想法吗?
我正在尝试将urlhttp://domain.com/?p=106redirect到http://domain.com/?p=110 我的.htaccess文件如下所示: RewriteEngine On RewriteCond %{QUERY_STRING} ^p=106 RewriteRule / http://domain.com/\?p=110 [L,R=301] 但我似乎无法得到它的工作。
鉴于以下url: domain.com/wiki/ 我想要Apacheredirect下面的所有请求(所以domain.com/wiki/*)otherdomain.com:8080/。 但诀窍是我希望用户总是看到domain.com/wiki/。 其他域的webapp认为它是在根目录下运行的,所以内部链接到css和images,就像/css/style.css一样。 这些url需要重写为/wiki/css/style.css。 以下configuration主要在那里,但是缺less/ css&/ images rewrite解决scheme: ProxyRequests Off ProxyPass /wiki/ http://otherdomain.com:8080/ ProxyPassReverse /wiki/ http://otherdomain.com:8080/ 任何和所有帮助表示赞赏。
我们的环境如下所示: HLB(Ace) – >冗余Apache服务器 – >后端Websphere服务器 进入负载均衡器的安全stream量,其中SSL证书被解密。 该请求然后转发到两个Apache Web服务器之一。 然后Apache将请求转发到适当的Websphere Application Server(如果需要)。 Websphere通过相同的path回复客户端。 我们的networking组告诉我们SSL不应该安装在networking服务器上,因为它阻止了它们的数据包跟踪。 对于我们内部的书面应用程序,当URL被redirect时,我们相对redirect,因此它保持为HTTPS。 然而,我们有一个购买的产品,处理,然后发送绝对redirect回到客户端作为HTTP。 我们相信这是因为apache收到未encryption的请求。 我们正试图find一种方法来让Apache将协议重写为https的应用程序在Websphere中(应用程序是Vignette Portal) 我试过一个简单的 <Location /LocationINeed> RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} </Location> 但是这并没有奏效。 根据我读的这个绝对的强制直接redirect到客户端,并最终创build一个循环。 我是一个相当缺乏经验的Apachepipe理员,花了一天的时间在网上寻找MOD_substitutem和mod_rewrite,但是我所有的尝试都不尽如人意。 如果你遇到过这个问题,我很想听听你是如何解决这个问题的。
就我的代码而言,我了解到为什么我会遇到无限循环。 所以我有以下几点: <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteRule ^foo/?([^/]+)?/?(.+)? /foo.php?bar=$1&baz=$2 [L,NC] </IfModule> 所以,用户进入foo (或foo/a/b )并redirect到foo.php?bar=$1&baz=$2 。 但在这一点上(这是我知道我需要一个更彻底的解释,因为我确定这是devise).htaccess文件正在重新运行foo.php?bar=$1&baz=$2 ,这匹配我规则,并进入无限循环。 但是我不知道为什么要通过我的规则重新运行。 什么是我不了解.htaccess RewriteRule ? PS我已经解决了这个直接的问题,把下面的命令放在规则之前,但是我想知道为什么我可以在将来解决这个问题(所以我可以删除这些命令行,而不是其他的东西)。 RewriteCondition %{REQUEST_FILENAME} !-f RewriteCondition %{REQUEST_FILENAME} !-d