Articles of mod rewrite

打印出redirecturl而不实际redirect

我已经build立了一个服务器,它是我们生产服务器的一个克隆,我们想用它作为testing服务器来testing我们的redirect器。 重要的是,我们不想像我们在生产机器上那样实际redirect到这些URL。 相反,我们只是想redirect到一个以文本forms显示url的页面。 目前,function完全像生产服务器,即它将您redirect到所需的url。 由于我不会介入的原因,我们不希望它在testing服务器上执行此操作,而只是希望显示redirecturl的内容。 这个盒子是一个Fedora盒子,大部分的redirect脚本都是用python编写的。 理想情况下,我只是写一个python脚本来完成这个任务。 请注意,最初,我被redirect到一个非本地的url。 该框的整个function是作为一个redirect器,它没有本地的网页界面。 我将不得不自己创buildWeb基础架构。

使用一台服务器上的域在另一台服务器上加载应用程序

我有一个应用程序坐在一个服务器上的Ubuntu操作系统。 它响应一个带有域名的IP地址,比方说,abc.com。 现在有另一台服务器响应这个域名,比方说,叫做xyz.com。 该应用程序不在该服务器上。 我希望域xyz.com在被调用时加载其他服务器上的应用程序(带有abc.com的服务器)。 但是,我也希望域abc.com也加载相同的应用程序。 林不是百分之百确定如何去做这个,无论mod_rewrite的变化可以提供这个。 感谢您的回应

mod_rewrite文件检查与扩展

这是我的.htaccess简单的URL重写任何MVC架构。 Options +FollowSymlinks RewriteEngine On RewriteBase /personal/site/ RewriteCond $1 !^(index\.php|resources|robots\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA] 每件事情只有一个例外起来。 在index.php所在的根目录下,我创build了一个文件generator.js ,我也有一个名为generator的控制器。 所以对于一个请求, http://localhost/personal/site/generator/css , 它必须重写到http://localhost/personal/site/index.php/generator/css 但它是重写到http://localhost/personal/site/generator.js/css 如何解决这种情况?

使用Apache mod_proxy_ajp和Tomcat基于客户机证书进行负载平衡

目前,我正在使用mod_proxy_ajp将请求均衡到多个Tomcat服务器。 呼叫者使用客户端证书和ACL进行身份validation。 这一直工作正常,呼叫者以均匀的速度路由到任一服务器。 现在我想为每个用户预取和caching数据,所以每个Tomcat服务器都会为一组已知的用户提供服务。 所以我认为按字母顺序拆分主叫方会很好。 用户名(CN或DN)以AM开头,到服务器1,名字以[NZ]开头的用户转到服务器2.但是我不知道如何做这个工作。 目前我有: <Proxy balancer://lb-service> BalancerMember ajp://svr1:8009 loadfactor=1 BalancerMember ajp://svr2:8009 loadfactor=1 </Proxy> <Location /lookup> ProxyPass balancer://lb-service/lookup </Location> 我正在考虑使用mod_rewite来改变url,以包括用户的CN,但我似乎无法做到这一点。 我几乎坚持使用Apache mod_proxy_ajp和Tomcat进行负载平衡。 我可以更改运行Tomcat的服务来接受不同的请求。 任何人都有一个好办法做到这一点?

是否有可能在apache2dynamicproxy_remote_match指令或以某种方式解决它?

我正在运行一个转发代理,我想使用ProxyRemote将某些请求转发到不同的代理服务器。 哪个请求去哪个服务器取决于许多因素(时间,负载,url,主机,用户…),并且必须由外部程序计算。 该过程目前通过向请求url的主机添加后缀,然后通过ProxyRemoteMatch指令进行匹配。 这是通过传递URL到一个重写映射。 这工作很好,但有贸易,我必须在configuration和DNS中定义EVERY服务器。 这是一个工作的例子: RewriteEngine on // define an external program that contains the logic where which request should be routed to RewriteMap balancemap prg:/home/mysite/balancemap.php <ProxyMatch "http://.*"> RewriteEngine on // if the route has not yet been set by suffix proxy pattern, pass the request uri and user to the mapping program and […]

从Nginx转换到Apache重写规则

我正在设置一个使用从http://usesthis.com/克隆的代码的网站 我的网站在http://hackingtheuniversity.net/ 您会看到网站上的每个访谈post都使用以下URL语法 http://firstname.lastname.hackingtheuniversity.net 原始网站的创build者使用Nginx,并提供了如何实现这种语法的以下内容 https://gist.github.com/1840543 我设置了通配符DNS和一个* .hackingtheuniversity.net的ServerAlias,但是我正在努力理解(并且find例子)如何将Nginx规则移植到modrewrite规则,并且希望得到一些帮助。 谢谢。

在Apache中设置永久链接和mod_rewrite

我将WP迁移到了CentOS虚拟机,我试图设置相当的URL。 我的第一步是编辑conf文件: vi /etc/httpd/conf/httpd.conf 在适当的标签下: <Directory "/var/www/html"> 并将AllowOverride从None设置为All: AllowOverride All 只要我改变了这个设置,我就会在所有的pipe理页面上看到错误: http : //screencast.com/t/ePNCxORe 不知道这是属于WP论坛还是其他论坛。 提前致谢。 我还应该添加我的主机名是IP地址。 我不确定如何在本地虚拟机上进行更改。 这就是我的DocumentRoot中的.htaccess文件的样子: # Use PHP5 Single php.ini as default AddHandler application/x-httpd-php5s .php # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END […]

重写规则MP3到PHP

我想重写所有.mp3文件到一个php文件。 而我不想传递的path 所以http://localhost/somepath/feb.mp3 http://localhost/feb.mp3 应该没有什么区别。 我想出了: RewriteRule ^(.*)\.mp3$ /files/read/?file=$1.mp3 [QSA] 我错过了什么? 也许一些正则expression式(。*)之前,但为什么不拿起MP3模式,并redirect到/files/read/?file=feb.mp3? 这似乎甚至没有赶上MP3文件: applying pattern '^(.*)\.mp3$' to uri 'feb.mp3' 它并没有停在那里,它经历了另一个条件, applying pattern '^.*$' to uri 'feb.mp3' pass through /htdocs/project/project-web/feb.mp3 非常感谢,如果这可以解决。 这是我的完整.htaccess SetEnv APPLICATION_ENV开发 RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ – [NC,L] RewriteRule ^(.*)\.mp3$ files/read/?file=$1.mp3 [QSA] RewriteRule […]

这些Apache重写有什么问题?

我有一套重写,应该赶上/cache/images/*文件系统不存在的/cache/images/*任何请求,并返回一个通用的图像根据后缀(相应的* _1.jpg的请求像/cache/images/foo_1.jpg这样的资源不存在)。 下面的代码块适用于大多数情况,但也匹配以1.jpg , 2.jpg或3.jpg结尾的所有请求,例如“domain.com/1.jpg”也返回/images/generic_1.jpg通用图像。 RewriteCond %{REQUEST_FILENAME} -f RewriteRule . – [L] RewriteCond %{REQUEST_URI} ^/cache/images/.*$ [NC] RewriteRule .*1.jpg /images/generic_1.jpg [L] RewriteRule .*2.jpg /images/generic_2.jpg [L] RewriteRule .*3.jpg /images/generic_3.jpg [L] 如果我复制第二个RewriteCond在2.jpg和3.jpg RewriteRule ,它按照devise工作,但是我想正确地执行这个操作,并将RewriteCond应用到它下面的三个RewriteRule 。 我究竟做错了什么?

Ubuntu服务器:Apache2似乎将.php附加到URI

我正在使用PHP库补品的Web服务。 我的资源就是例子 base-uri/myResource 现在,如果该目录中存在一个myResource.php文件,那么mod_rewrite的url就可以看到 base-uri/myResource.php 然后失败的重写条件和我的应用程序中断(应用程序在Windows上的Apache) 如果我将myResource.php重命名为myResourceClass.php(或其他),它就可以工作。 所以它似乎是apache或一个,如果其模块假定与base-uri / myResource我想调用base-uri / myResource.php,但只有当myResource.php存在。 这是一个普遍的问题,或者我可以在某处configuration这不会发生? 谢谢! 编辑: 看到 如何设置一个基本的mod_rewrite? 答案包含相同的观察! 回答: 问题是Ubuntu上的默认Apacheconfiguration: Options Indexes FollowSymLinks MultiViews MultiViews将request_uri从myResource更改为myResource.php。 解决scheme: 在.htaccess中禁用MultiView:选项-MultiViews 从默认configuration中删除MultiView 将该文件重命名为myResourceClass的示例 我select了最后一个选项,因为这应该工作,无论configuration,我只有3个这样的文件,所以改变了大约30秒…