Articles of mod rewrite

mod_rewrite条件/规则是否可以随机执行?

我有一些国防部重写规则,testing在各种NFS安装文件的存在,我希望testing随机发生,作为一个非常基本的方式来分配负载。 例如: 重写引擎 RewriteCond%{REQUEST_URI} ^ /(。+)$ RewriteCond / mnt / mount1 /%1 -f RewriteRule ^ /(。+)$ / mnt / mount1 / $ 1 [L] RewriteCond%{REQUEST_URI} ^ /(。+)$ RewriteCond / mnt / mount2 /%1 -f RewriteRule ^ /(。+)$ / mount2 / $ 1 [L] RewriteCond%{REQUEST_URI} ^ /(。+)$ RewriteCond / mnt / mount3 /%1 -f RewriteRule ^ […]

自动redirect到子目录,并删除www

我想做两件事:将http://www.example.com (与www )redirect到http://example.com/fr (不含www ,AND子目录) 当然,我也希望http://example.comredirect到http://example.com/fr 。 我看到这个解决scheme: RewriteCond %{HTTP_HOST} ^(www\.)?example.com$ [NC] RewriteCond %{REQUEST_URI} !^/fr/.*$ RewriteRule ^(.*)$ /fr/$1 [L,R=301,NC] 但它会像疯了一样减慢我的网站(以后不可能加载页面)。我应该在上面的代码中修复什么? 这是我完整的代码 Options +FollowSymLinks RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ – [L] RewriteRule ^index\.php$ – [L] RewriteCond %{HTTP_HOST} ^(www\.)?beastof\.com$ [NC] RewriteCond %{REQUEST_URI} /(.*) RewriteCond %{REQUEST_FILENAME} !-f RewriteRule !^fr(/|$) /fr/%1 [R=301,L] RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ […]

我如何configurationApache将子目录redirect到颠覆回购?

我有一个旧的Subversion版本库被设置为机器上唯一的回购。 我们访问了这样的url: http://myserver.com/svn/trunk/… http://myserver.com/svn/branches/… 我们正在转移到一个新的服务器,我们在apache2下有一个dav-svn安装下设置了几个存储库,所以默认情况下我们可以像这样访问它们: http://myserver.com/svn/repo/trunk/ http://myserver.com/svn/repo/branches/ or http://192.168.0.1/svn/repo/trunk/ http://192.168.0.1/svn/repo/branches/ 我需要将旧的repo移动到新的机器上而不更改URL,所以我想要设置一个repo,然后根据url将apacheredirect,所以: http://myserver.com/svn/trunk redirect到 http://myserver.com/svn/repo/trunk 透明。 我可以把它redirect到基于IP的URL,但是当我尝试使用域名本身进行redirect时,它给了我禁止的消息或“无法打开请求的SVN文件系统”: <VirtualHost *:80> ServerName myserver.com ServerAlias www.myserver.com DocumentRoot /var/www/vhosts/myserver.com/html CustomLog /var/www/vhosts/myserver.com/logs/access_log combined ErrorLog /var/www/vhosts/myserver.com/logs/error_log RewriteEngine On RewriteRule ^/svn(.*)$ /svn/myrepo$1 [L,QSA] # THE FOLLOWING WORKS, BUT IS NOT TRANSPARENT # RewriteRule ^/svn(.*)$ http://192.168.0.1/svn/myrepo$1 [L,QSA] <Directory /var/www/vhosts/myserver.com/html> AllowOverride All </Directory> </VirtualHost> 和subversion.conf文件: […]

需要帮助find我的.htaccess不被读取有什么问题

我试图通过.htaccess文件使用mod_rewrite,我有一个很大的问题,.htaccess文件似乎不被读取。 该机器正在运行Debian 5.0,它使用稳定的apache2软件包。 我遵循这个页面的指示: http : //www.debian-administration.org/articles/136 。 启用mod_rewrite是这样的: a2enmod rewrite 在我的/etc/apache2/apache2.conf文件中,我添加了这个: <Directory "/var/www"> AllowOverride ALL Options FollowSymLinks </Directory> 在根目录下,我创build了一个包含以下内容的.htaccess文件: RewriteEngine on RewriteRule ^test$ foo.html 我已经尝试了许多类似的问题的答案无济于事。 我访问foo.com/test时得到的错误消息是404页面未find。 所有文件都可以被大家阅读。 直接访问foo.html没有问题。 我也试图把垃圾放入另一个.htaccess来看看Apache是​​否会抱怨,没有任何改变。 也许我太累了! 谢谢

htaccess全部redirect到一个文件(本地主机除外)

我想redirect所有stream量到一个单一的.php网关文件,这个文件将执行身份validation,并使用ajax拉取请求的文件。 所以我需要一个像这样的stream.htaccess: if external request for any file redirect (or rewrite) to /gateway.php gateway.php然后需要能够访问该文件。 这是最好的想出来的是: RewriteEngine On RewriteBase / RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1 RewriteCond %{REQUEST_URI} !/gateway\.php$ RewriteRule .* http://www.website.com/gateway.php?req=%{REQUEST_URI} [R=302,L] 这是工作,但是当gateway.php上的ajax尝试从另一个页面获取内容时,它从gateway.php获取内容(因为redirect)。 我需要以某种方式添加一个exception! 任何帮助将不胜感激!

dynamic子域,mod_python和trac

我将要运行多个子域,最终太多以至于每个都有自己的configuration文件。 我有我想要他们的虚拟主机,所以每个子域有自己的文件夹例如/networking/testing将为该子域的网页。 我想每个子域都有自己的SVN和trac项目,例如http://test.mastersiege.com/trac问题是你不能在apache中使用variables。 <Location /trac> SetHandler mod_python PythonInterpreter main_interpreter PythonHandler trac.web.modpython_frontend PythonOption TracEnv /var/trac/$1 PythonOption TracUriRoot /trac </Location> 其中$ 1 =子域。 我不能sym链接trac文件夹到子域主文件夹,然后使用vhost_alias的文档根作为TracEnv。 我试图编写一个Perl脚本的Apacheconfiguration文件,从URLparsing子域非常像dynamic使用mod_perl在Vhost容器内使用URL,但它没有工作 use Apache2::ServerRec () ; use Apache2::ServerUtil (); use Apache2::RequestRec (); use Apache2::RequestUtil (); use Apache2::Const qw/OK DECLINED/; my $s = Apache2::ServerUtil->server; $s->push_handlers(PerlHeaderParserHandler => sub { my($r) = @_; if ( $r->hostname =~ […]

redirect到公用事业服务器的方法

我有一种情况,我需要促进200M的file upload到与主网站服务器分离的公用事业服务器。 这是我的configuration: Authenticated Client on Public Internet /\ \ | \_____ 200M | \_____ | \_____ VV Authenticating <——-> Utility Server Web Site (EC2, Windows, Apache, Python, Django) Server (EC2 LAMP) 我目前的解决scheme仅仅是让我的Web服务器通过实用程序服务器的EC2 URL,并允许客户端直接与实用程序服务器通信。 这有两个缺陷 – 它暴露未经身份validation的实用程序服务器的URL,它需要客户端上的跨域技巧来将POST上载路由到实用程序服务器。 问题是什么是从客户端隐藏实用程序服务器的最佳方式,而不通过Web服务器推送file upload数据? 这些是我想要尝试的想法: DNS将实用程序服务器与子域别名。 这可能会修复我的跨域脚本问题,但我不确定它是否有助于保护公用事业服务器。 也许我可以从实用程序服务器检查Web服务器的身份validationCookie? 在网站的Apacheconfiguration中重写规则。 我不清楚这是如何影响POST的数据实际上被路由的。 在网站的Apacheconfiguration中redirect。 我不确定是否可以使用redirect来隐藏用户的实用程序服务器URL。 从网站的控制器代码redirect。 与#3相同的问题,但我认为这可能比#3更好,因为它会通过PHP身份validation层传递请求。 更好的东西?? 笔记: 实用程序服务器的不寻常configuration是需要执行的实用程序的可用软件的交集的function。 实用程序服务器不是严重恶作剧的高价值目标。 只要把前门锁上就足够了,但是我想避免把钥匙留在垫子下面。

阻止AWS ELB后面的stream量

我的Web服务器在ELB后面,我想阻止来自某个DDOS攻击的特定用户代理的stream量。 Apache总是看到ELB的IP地址作为最终用户,所以我尝试了下面的尝试: 阻止在ELB级别的IP地址是不可能的,因为它有20个IP地址的限制和IP地址在每次攻击时改变。 阻止访问使用重写条件,这个工程,但如果很多命中来,然后服务器负载超过100,所有的Apache线程忙于服务吨的403,所以网站出现合法的请求。 RewriteCond %{HTTP_USER_AGENT} ^SomeThing RewriteRule ^(.*)$ – [F] 用mod_sec块做同样的事情的服务403创造相同的效果上面#2。 使用iptables阻止数据包string模块:阻止具有特定用户代理的数据包。 在这种情况下,iptables发送DROP / REJECT给攻击者,apache没有得到连接现在已经死了的信号,并等待超时导致所有的apache线程超时使用,所以这个方法在这里没有用处。 iptables -I INPUT -i eth0 -p tcp –dport 80 -m string –algo bm –string 'user-agent: SomeThing' -j REJECT 我可以使用iptables的方式,它会从第一个包含user-agent: SomeThing数据包获取IP地址,并阻止所有下一个具有X-Forwarded-For: someIP数据包,时间为4-5小时。 我不想永远阻止IP地址阻塞,因为这些IP地址可以分配给一些合法的用户,并将被阻止。 或者还有其他更好的办法来处理这个攻击吗?

Apache mod_rewrite删除问号(?)和查询stringreplace

我用mod_rewrite注册了一个RewriteRule,但是被replace的URL是错误的。 规则是: RewriteRule ^/img/z(0|1)u(.+)\.(gif|jpg|jpeg|png)$ /image-servlet/img/?z=$1&url=$2 [NE,QSA,PT,T=image/$3] 当我访问以下url时: http://localhost/img/z1uABC.jpg 应用的规则redirect到: http://localhost/image-servlet/img/ABC 最终的URL错过了查询stringreplace: ?z=$1&url=$2 并被replace为: $2 有人可以帮我解决我的错误吗? 谢谢, 和过去

为什么$ 1反向引用在没有子组的情况下重写?

我正在使用的人有一个像SVN这样的RewriteRule,如下所示: RewriteRule ^admin/ebay.*$ /yii.php/$1 [L] 我警告过他可能无法工作,因为比赛中没有对应于$ 1反向引用的子组。 它确实有用,而我感到困惑。 我很确定他的意图是以下两种情况之一: RewriteRule ^admin/ebay.*$ /yii.php/$0 [L] # $0 is whole match …要么… RewriteRule ^admin/ebay(.*)$ /yii.php/$1 [L] # $1 subgroup Apache是​​否对我从来不知道的反向引用做出假设? 为什么他的重写规则(最重要的)工作?