我的工作中有一个Jira和一个Confluence系统。 两者都在同一台服务器上运行。 访问Jira和Confluence的实际URL是: http://foauslxapp05:8080/jira http;//foauslxapp05:8090/confluence 或者使用完整的主机名称: http://foauslxapp05.foservices.corp:8080/jira http://foauslxapp05.foservices.corp:8090/confluence 为了简化一切,我设置了一个代理规则来允许用户这样做: http://foauslxapp05/jira <– Accessing Jira http://foauslxapp06/wiki <– Accessing Confluence 我们的技术人员为foauslxapp05创build了一对服务器别名,以便: http://jira/jira <– Accessing Jira http://jira.foservices.corp/jira <– Accessing Jira http://wiki/wiki <– Accessing Confluence http://wiki.foservices.corp/wiki <– Accessing Confluence 我真正想要做的就是走下一步: http://jira <– Accessing Jira http://jira.foservices.corp <– Accessing Jira http://wiki <– Accessing Confluence http://wiki.foservices.copr <– Accessing Confluence 问题当然是,DNS名称jira和wiki只是foauslxapp05的 DNS别名。 我需要检测用户input的URL(即用户请求的主机),然后基于该URL,我需要将用户redirect到正确的应用程序。 我甚至不太确定我应该看什么:这个VirtualHost? […]
编辑这个工程,需要使用%代替$捕获组: RewriteRule (.*) http://localhost:8081/%1/%{TIME_YEAR}1101%2 [P] 有一个困难的时间整理出来。 需要一个有条件的注入到特定的URI(用于代理到Jetty应用服务器)的datestring,条件是,如果没有8位数字的datestring已经存在,注入它。 我想到的黑客是: RewriteCond %{REQUEST_URI} ^/(foo|bar|baz)(.*) RewriteCond %2 !/(\d{8})(.*) RewriteRule (.*) http://localhost:8081$1/%{TIME_YEAR}1101$2 [P] 这在某种程度上是有效的,但不是全部,$ 2是空的,$ 1匹配整个URI。 基本上什么事情发生是/foo/2被重写到/foo/2/20121101 ,而我需要发生的是/foo/20121101/2 所以,假设$ 1匹配整个URI,那么我怎样才能使它匹配foo | bar | baz,留下$ 2作为URI余数,然后我可以在date中夹入? 另外,这是一个可怕的低效率的方法? 阿帕奇文档通常指示链接[OR]所以不知道直线正则expression式的路要走(当然更简洁)。 在Apache 2.4上,所以希望实际上可以从速度提升中受益(而不是在脚下自我拍摄) 谢谢
我需要重写REQUEST_URI和HTTP_HOST,但是当我实现这个时,我得到一个redirect错误: # Capture mysite.com/pages/123 RewriteCond %{REQUEST_URI} ^/pages/[0-9]+/?$ RewriteRule ^/pages/([0-9]+)/?$ /home/mysite/www/pages.php?id=$1 # Now capture the subdomain RewriteCond %{HTTP_HOST} ^([a-z0-9]+).mysite.com RewriteRule (.*) $1&subdomain=%1 [L,QSA] 我在这里做错了什么? 谢谢
这是我的.htaccess文件的内容: Options MultiViews Options +FollowSymlinks RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www.lventas.com$ [NC] RewriteRule ^(.*)$ http://lventas.com/$1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.*)$ http://lventas.com/negocio/$1 [L,QSA] ErrorDocument 404 http://www.lventas.com/404.php RewriteOptions Inherit 当到达根文件夹时,它不应该什么都不做,但它仍然redirect到: http://lventas.com/negocio/default.asp 什么是'default.asp'? 为什么要在那里?
这是我的整个mod_rewrite条件: <IfModule mod_rewrite.c> <Directory /var/www/> Options FollowSymLinks -Multiviews AllowOverride None Order allow,deny allow from all RewriteEngine On # force www. (also does the IP thing) RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} !^mysite\.com [NC] RewriteRule ^(.*)$ http://mysite.com/$1 [R=301,L] RewriteCond %{REQUEST_URI} ^system.* RewriteRule ^(.*)$ /index.php?/$1 [L] RewriteCond %{REQUEST_URI} ^application.* RewriteRule ^(.*)$ /index.php?/$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} […]
我已经安装了一个新的Ubuntu 12.04服务器,并设置了Apache和MySQL。 我只是试图复制我现有的服务器中所遇到的问题,并遇到了一个单一的问题。 – > FileInfo 在以下两个文件中: /etc/apache2/sites-available/default-ssl /etc/apache2/sites-available/default 我需要添加一些覆盖的Apache服务器。 原版的: <Directory /var/www/MySite> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> 新: <Directory /var/www/MySite> Options Indexes FollowSymLinks MultiViews AllowOverride FileInfo, Indexes Order allow,deny allow from all </Directory> 我已经为Apache安装了以下mod: sudo apt-get install lamp-server^ -y sudo apt-get install apache2.2-common apache2-utils openssl openssl-blacklist openssl-blacklist-extra […]
我想重写http://example.com/apps/app4/step1.php到http://easyfanpageapp.com/apps/ 我用这个重写,但它不工作。 RewriteEngine On RewriteBase / RewriteRule ^apps/?$ ^(.*)\step1.php$ [NC,L] 也试过 RewriteRule ^apps/?$ apps/app4/step1.php$ [NC,L] 什么可能是错的?
即时将一个Apache2服务器迁移到Lighttpd,但即时通讯与Mod_Rewrite有一些问题。 我有一个目录/ api /,我需要从重写规则中排除如下: url.rewrite-once = ( ".*\?(.*)$" => "/index.php?$1", ".*\.(js|ico|gif|jpg|png|css)$" => "$0", "" => "/index.php" ) 我试图围绕着块 $HTTP["url"] !~ "^/api/" { } 然而,这不起作用,只是从重写中排除每一个URL。 有没有人知道的方法 a)从重写中排除/ api / b)排除服务器上存在的每个实际目录重写 我已经看到了Drupal的Lua脚本,可以做后者,但是我不熟练Lua,不知道如何configuration这个Zend Framework应用程序。 整个configuration: http : //pastebin.com/ggjiTFLk 干杯
我正在维护一个拥有3个不同版本的站点的网站,有3种不同的语言,用一个用php编写的单一系统来处理,它根据正在被访问的域名接受环境variables。 这三个网站是: myshop.com:英文国际版 myshop.eu:欧洲版本的网站 myshop.ru:该网站的俄语版本 当myshop.com从俄罗斯访问它将被redirect到myshop.ru,并从欧洲的任何国家访问myshop.com,被redirect到myshop.eu,国际访客停留在myshop.com,虽然他们可以去国家特定的网站。 所有这些国家的redirect都是使用GeoIP apache2 mod来完成的,为了确定国家代码,在RewriteCondition中使用这个代码来表示一个RewriteRule,还有一些不重写的IP地址的例外,基本上是IP地址开发人员的电脑。 这个网站一直做得很好,直到我们决定build立清漆网站,这确实给了它一个很大的推动,但是国家特定的重写已经成为越野车。 开始发生的事情是,一个俄罗斯的访问者可以去myshop.com,不会被redirect,直到他点击一个随机链接(也许一个链接没有被caching清漆),用户被redirect到他们的国家。 对于这个我设置mod_rpaf和重写规则的例外(开发人员的ip),我用这个RewriteCond %{HTTP:X-FORWARDED-FOR} !^43\.43\.43\.43 ,我重新启动清漆和apache2,它工作了一段时间,然后又搞砸了。 整天我都在做改变,但是我不知道发生了什么事情,有时是有效的,有时候是不行的,有时甚至有一半是有效的。 至于geoip,我用一个php来检查$_SERVERvariables,这里是输出的一般想法 [HTTP_X_FORWARDED_FOR] => 43.43.43.44 [HTTP_X_VARNISH] => 1705675599 [SERVER_ADDR] => 127.0.0.1 [SERVER_PORT] => 80 [REMOTE_ADDR] => 43.43.43.44 [GEOIP_ADDR] => 43.43.43.44 [GEOIP_CONTINENT_CODE] => EU [GEOIP_COUNTRY_CODE] => FR [GEOIP_COUNTRY_NAME] => France 现在,由于“随机”redirect,我几乎不知道发生了什么,所以你们可以给我一些关于使用什么工具来debugging的想法吗? 我试图看到redirect日志,但他们真的不显示太多,varnishlog也没有什么帮助 – 虽然我必须承认,我不是专业的清漆。 我相信问题是清漆尝试caching的url,因此Apache的redirect没有做好,但访问该网站首先有一个redirect,并基于其他用户服务的内容,取决于从哪里用户当caching最后更新时,它是正确的吗? 如果是这样,我该如何解决这个问题? 另外,我可以select在varnish3上使用geoipredirect,而不是使用apache2来执行redirect,那么最佳实践是什么? 任何build议debugging或修复这将是有帮助的! 日Thnx!
我有一种情况,我想要将所有以/ app开头的内容redirect到内部服务器。 基本上这个想法是,Apache将作为一个反向代理进行以下转换: http://external/app -> http://myserver:1082/myapp 我可以使用Rewrite来完成,如下所示: RewriteCond %{REQUEST_URI} ^/app RewriteRule ^/app(.*)$ http://myserver:1082/myapp$1 [L,P] ProxyPassReverse /app http://myserver:1082/myapp 它工作正常。 问题是,现在我要在URL上有一个语言preffix,但在应用程序上没有。 所以我需要以下redirect: http://external/app -> http://myserver:1082/myapp http://external/en/app -> http://myserver:1082/myapp http://external/pt/app -> http://myserver:1082/myapp 虽然这可以通过重写来完成,但是我有一个proxyPassReverse的问题。 因为基本上我需要做一个dynamic的ProxyPassRever,根据用户的实际URL请求,改变位置 ProxyPassReverse /en/app http://myserver:1082/myapp ProxyPassReverse /pt/app http://myserver:1082/myapp ProxyPassReverse /app http://myserver:1082/myapp 这将是类似的东西 ProxyPassReverse ${preffix}/app http://myserver:1082/myapp 有没有可能做到这一点?