Articles of mod rewrite

Apache重写规则:是否可以将请求redirect到null

我有一个小问题来快速修复与请求一个页面,应该是空的Js。 是否有可能将该请求redirect到/ dev / null之类的东西? 提前致谢! 光伏

用Alias重写Apache 2.2只能在模式下工作

我有一个mod_rewrite规则传递请求到前端控制器,但我似乎无法得到它没有[R]标志的工作。 设置不是完全简单,我有一个Web根目录内的别名目录,我试图重写到该目录。 如果我忽略那个目录,我可以把它重写得很好。 如果我使用: Alias /main /some/path/ RewriteEngine on RewriteCond $1 !^(index\.php|images|css|js|robots\.txt) RewriteRule /main/(.*)$ /main/index.php/$1 [R] 它按预期工作,并且index.php接收值作为参数,但是因为它使用了[R]标志,所以/main/some-param的请求以/main/index.php/some-param结尾的URI结束我想要让它透明。 如果没有[R] ,请求将产生一个404,并且沿着File does not exist: /mywebroot/main行的日志条目File does not exist: /mywebroot/main ,这看起来很奇怪。 在这里有没有关于使用Alias任何事情,或者是规则本身的错误?

htaccess重写引导斜杠

我正在使用htaccess重写我的url,以便我可以有很好的干净的url。 但是,相同的htaccess文件在我的本地服务器和远程服务器上做了不同的事情: 在我的本地服务器上,url是http://localhost/example/ ,在我的远程服务器上,url是http://example.com/ 。 对于我的本地服务器,我可以使用以下htaccessredirect规则: RewriteRule ^(.*)$ index.php?page=$1 [L,QSA] 但是,当我在远程服务器上使用它时,出现内部服务器错误。 相反,我必须使用这个:(注意斜杠) RewriteRule ^(.*)$ /index.php?page=$1 [L,QSA] 不幸的是,这在我的本地服务器上不起作用:这个重写规则在本地服务器上请求http://localhost/index.php而不是http://localhost/example/index.php 。 如何在远程服务器和本地服务器上进行这项工作?

通过禁用默认VirtualHost从search引擎机器人和查看者隐藏网站

当在远程VPS上login网站时,我们希望只有团队成员才能访问网站,而且我们也希望保持search引擎的closures状态,直到网站最终确定。 无论是在Iptables还是Apache,主机访问控制都是不可取的,因为访问主机可能会有所不同。 在Apacheconfiguration文件和其他SF文章中阅读了一些内容之后,我决定依靠限制只能通过特定域名访问的以下devise: 默认虚拟主机将在Apacheconfiguration中被禁用,如下所示 – 依靠Apache的行为来使用第一台虚拟主机作为站点默认值: <VirtualHost *:80> # Anything matching this should be silently ignored. </VirtualHost> <VirtualHost *:80> ServerName secretsiteone.com DocumentRoot /var/www/secretsiteone.com </VirtualHost> <VirtualHost *:80> ServerName secretsitetwo.com … </VirtualHost> 然后每个团队成员可以在他们的本地/etc/hosts添加域名: xx.xx.xx.xx secrethostone.com 我的问题是:上述技术是否足以达到上述目标,特别是限制SE僵尸程序,或者僵尸程序可能会解决这个问题。 注意 :我知道mod_rewrite规则可以用来达到类似于这里讨论的效果: 如何在apache2中禁用默认的VirtualHost? ,所以同样的问题也适用于这种技术。 另外请注意 :内容不是很高度保密 – 这个想法不是devise一些可以certificate黑客的东西,所以我们不关心交通拦截等等。 这个想法是保持竞争对手和偶然的冲浪者在发布内容之前查看内容,并防止SE机器人将其索引。

与镜像站点一起使用CloudFlare

我正在开发一个镜像网站(人们可以下载文件,有点像FTP)。 我想知道如何使用CloudFlare来帮助减less带宽使用。 我有mod_rewrite镜像网站,所以当用户去http://www.example.com/xyz/file.zip它被redirect到http://www.example.com/download.php?path= xyz&file = file.zip ,它增加下载次数并输出“file.zip”。 这是重写规则: RewriteRule ^(.*)/((.*)(.zip))$ /download.php?path=$1&file=$2 我想知道,如果我在这个网站上使用CloudFlare,它会不会让.htaccess文件变得无用,PHP代码无用?

重写drupallogin页面的规则,强制https

我正在努力为需要在https下访问的drupallogin页面编写重写规则。 RewriteRule ^/?(/user) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 所以在财政上我需要redirect/用户https:/ /(基地url)/用户 任何人都可以提供一个指针,以便如何做到这一点?

mod_rewrite + proxyclosures后端连接(keepalive)

我们有一个相当典型的设置:client < – > apache2(2.2.22)< – >后端(*)。 最初我们用最简单的forms使用mod_rewrite和[P]标志: <VirtualHost *:80> RewriteEngine On ProxyPreserveHost On RewriteRule ^(.*)$ http://localhost:8081$1 [P,L] </VirtualHost> 然而,使用这种设置,即使客户端使用保持连接并使用一个tcp连接发送多个http请求到apache,apache创build一个到后端的新的tcp连接来达到请求。 我决定直接尝试使用mod_proxy: ProxyPreserveHost On ProxyPass / http://localhost:8081/ 而令我惊讶的是,Apache和后端之间的tcp连接被重新使用(这是我最初的目标)。 这是为什么? 有没有在mod_rewriteconfiguration启用Keepalive后端连接? (*)后端实际上是haproxy < – >多个应用程序服务器,但我认为这不重要。

没有redirect的Apache转发(应用程序不会遵循redirect)

最近我们不得不将/任务移动到/ public / task,我想configurationApache来redirect。 但是,使用mod_rewrite,尽pipe它在浏览器中工作,似乎打破了应用程序的API调用上述位置。 会发生什么情况是应用程序返回一个页面,并显示该页面已移动,但该应用程序不遵循redirect。 那么,有没有办法简单地转发任何stream量/任务到/公共/任务没有“redirect”,即返回一个redirect状态代码? 编辑:这里有一点信息。 我发现一个简单的testing来澄清我正在尝试修复。 这是需要转发的URLpath: https://mydomain.com/task 需要去: https://mydomain.com/public/task 如果我对原始域使用curl,它只是返回一个redirect页面通知。 如果我添加-L标志,它告诉curl跟随redirect,然后成功地跟随redirect。 我假设在应用程序中(我没有访问权限)发生了非常类似的事情,它调用了/任务​​URLpath。 由于我不能修改应用程序,使其遵循redirect,我正在寻找一个解决scheme,我可以在Apache中实现。 编辑2:谢谢大家为你input。 ryanmbuild议在重写中使用[P]标志。 以下是我所做的一切: Apache显然有三种方式将访问者转发或redirect到一个URL:别名,代理和重写。 别名似乎是最明显的解决scheme,因为它默默地将访客转移到新的指定位置。 不幸的是,这并不适用于我,因为别名需要指定实际文件系统上的新位置,并与Jboss,该位置在每次重新部署/重新启动时更改。 使用ProxyPass似乎也能工作,而且有可能,但是我configuration它的每一个方法,curl都会返回一个空的结果,而且看起来没有任何事情发生。 这是我用过的代理命令无济于事: ProxyPass /task http://localhost:8080/public/task 最后,redirect(用[P]标志)解决了这个问题。 我最初的redirect看起来像这样: RewriteRule ^/task/(.*)$ public/task/$1 [R,L] 使用[R],Apache将redirect头返回给客户端,在任何浏览器中都能正常工作,但却导致像curl这样的应用程序停止了一个告诉他们redirect的页面。 curl需要-L标志,然后按照redirect。 最后,使用ProxyPass和Rewrite的组合,我能够使其工作。 我在ryanm的build议中使用了这个[P]标志,curl现在会在redirect之后,而不必使用-L标志。 我最后的指示是这样的: RewriteRule ^/task/(.*)$ http://localhost:8080/public/task/$1 [P] 再次感谢大家的帮助!

我有关于mod_rewrite的查询

首先,我仍然是mod_rewrite的初学者。 大家如果我有这个.htaccess代码 RewriteEngine On RewriteRule ^index/(.*)/$ index.php?usr=$1 [L] 必须改变链接(href)的forms 例 <a href="index/image/">Click Here</a> 或者按原样离开 例 <a href="index.php?usr=5">Click Here</a> 如果将其保留为<a href="index.php?usr=5">Click Here</a>将以这种方式显示链接http://domain.com/index/image/ 。 编辑#1 这里是一个html代码的例子。 <div id="main_menu"> <ul> <li><a href="index.php">{$lang.Nav_Home}</a></li> <li><a href="sections.php?cid={$value.cat_id}">{$value.cat_name}</a></li> {else} <li id="moreSection_{$secNum}" style="display: none;"><a href="sections.php?cid={$value.cat_id}">{$value.cat_name}</a></li> <li><a href="javascript:;" onclick="showHideMoreSec('moreSection',this)"> <img src="images/arrow_down.png" alt="{$lang.MainMenu_MoreSection}" title="{$lang.MainMenu_MoreSection}" /> </a></li> </ul> </div>

如何从查询string的URL中间删除一个斜杠?

我有一些域redirect指向我的服务器上的页面,他们在文件名后面但在查询string之前粘贴一个尾部的斜杠。 所以这: http://hydesim.com?dll=40.71427,-74.00597&yd=10&zm=12&op=156 变成这个: http://meyerweb.com/eric/tools/gmap/hydesim.html/?dll=40.71427,-74.00597&yd=10&zm=12&op=156 而不是这个: http://meyerweb.com/eric/tools/gmap/hydesim.html?dll=40.71427,-74.00597&yd=10&zm=12&op=156 那么如何在保留查询string的同时删除URL中间的斜杠呢? 我试过一些.htaccess方法,但似乎没有工作。 最近的尝试是: RewriteRule ^(.+)html/(.+)$ /$1html$2 [R=301,L] [更新:该规则不起作用,所以我禁用它,现在没有重写有效。]我不是很有经验的mod_rewrite ,你可能已经猜到了。 任何帮助非常感谢!