我有2个服务器,Apache和Jboss。 使用JKmount .war文件被挂载并呈现一个复杂的网站。 例如: JkMount /directory/* ajp13 Alias /directory /jboss/server/default/deploy/directory.war <Directory /jboss/server/default/deploy/directory.war> Order allow,deny allow from all Options -Indexes </Directory> <Directory /jboss/server/default/deploy/directory.war/WEB-INF> deny from all </Directory> 我想在Apache端使用mod_rewrite来改变mod_jk返回的URL。 例如: RewriteEngine On RewriteCond %{REMOTE_ADDR} !^192.168.1.1$ RewriteRule /.* http://server.example/redirect.html [R=301,L] 目前上面的代码只影响Apache返回的图像,而不会影响mod_jk返回的页面。 这可能吗? 它是如何完成的? 有一个类似的问题在StackOverFlow询问,但给出一个select,如果有可能我想处理这个内部的Apache,而不是改变Jboss的configuration。 服务器是OpenSuse 11.1,我怀疑可能有一些模块优先顺序问题,但我还没有能够证实这一点。 url的例子是: http://site.example/directory/index.jsp http://site.example/foo/other.html 在这个例子中,第一个URL使用上面configuration中列出的指令安装在mod_jk中,不会被mod_rewrite重写。 第二个URL是Apache站点中的正常目录,并被正确地重写。 谢谢大家
我运行一个nginx反向代理背后的apache2实例,nginx执行基本身份validation,apache2提供Nagios cgi脚本。 我能够将authentication的用户从nginx发送到apache(目前使用X-Forwarded-User头设置为$ remote_user) – 但是我很努力地让apache2识别这个头并在执行CGI脚本之前设置REMOTE_USER envvariables。 我相信mod_rewrite可能能够做到这一点,但我所看到的所有例子都与相反的场景有关,其中apache2发送REMOTE_USER下游到另一个后端服务器。 甚至有可能将apache中的REMOTE_USER设置为apache自己的mod_auth模块之外的东西?
我们当前的IIS设置为两个运行在不同path(例如http:// server / sub-a和http:// server / sub-b)的应用程序 。 我想以root身份别名http:// server / sub-a ,这样只要去http:// server /就可以调出sub-a的内容。 我面临的问题是,当我最初设置一个ReverseProxy时,它负面地影响了http:// server / sub-b 。 我知道这是一个相当普遍的问题,你是怎么解决的? 我有99.9%的经验是使用Apache,所以我觉得在IIS的GUI世界中有点失落。
我有一个.htaccess的RewriteCond类似于: RewriteCond "%{ENV:FOO}" =bar 但${ENV:FOO}正在扩展到FOO的值,它总是空白的。 例如,如果我在RewriteCond之前设置了SetEnv FOO "bar" ,然后启动RewriteLogLevel ,我在我的重写日志中得到这个: RewriteCond: input='' pattern='=bar' => not-matched 我在这里做错了什么? 如何使RewriteCond内部的环境variables扩展? 另外,如果我像RewriteRule .* %{ENV:FOO}那样添加一个愚蠢的RewriteRule ,我可以在重写日志中看到variables正在被正确地展开。 我的Apache版本是2.2.17。 编辑 :我发现这个问题的另一个参考 。 看起来像一个“解决scheme”是使用SetEnvIf而不是SetEnv … = \ 此外,它似乎不像SetEnv的位置有任何影响。 我已经把它放在httpd.conf和.htaccess ,都没有工作。
我有一个域, mydomain.com ,我想显示其他网站的内容。 例如,假设有这个url的内容 – > http://www.foo.com/my/file.bar ,我希望当用户访问http://www.mydomain.com/my/file.bar时显示该页面的内容http://www.mydomain.com/my/file.bar ,没有用户看到foo.com的URL。 我目前在我的.htaccess中使用下面的apache指令: <IFModule mod_rewrite.c> RewriteEngine on RewriteRule ^(.*)$ http://www.foo.com/$1 [L] </IFModule> 但是,这将用户的浏览器redirect到foo.com的URL,我不希望这样做。 这甚至有可能吗?
好的,所以我有这个包含这个.htaccess文件 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php?p=%{REQUEST_URI}&%{QUERY_STRING} [L] </IfModule> 问题是,在Apache 2.2.22中, p和其他查询对象没有通过,但它在apache 2.4.2中效果很好。 所以基本上在Apache 2.2.22它只是将所有内容转发到index.php,但它没有任何get对象。 任何帮助,谢谢。 更新 好,所以我改变了线路 RewriteRule . /index.php?p=%{REQUEST_URI}&%{QUERY_STRING} [L] 至 RewriteRule ^(.*) /index.php?p=$1 [L,QSA]现在在Apache 2.2.22 p GET不通过,但任何具体的查询,我添加通过。 所以,如果我这样做 http://localhost/index/fun/buns/funds?man=woman 在2.4.2我得到 array (size=2) 'p' => string 'index/fun/buns/funds' (length=20) 'man' => string 'woman' (length=5) 和2.2.22我得到 […]
首先,这是我第一次去阿帕奇,所以请原谅我的开端主义:) 我的基本设置是这样的: mysub.domain.com通过在godaddy的DNS经理的CNAME条目发送到我的静态IP。 它击中我运行Apache2的Ubuntu 10 LTS服务器。 我有一个虚拟主机条目,将该请求引导到正确的/var/www/mysub文件夹。 我没有任何内容,但是我在“It Works”页面添加了一行,所以我知道我是否成功。 我也有一台Mac Mini在Ubuntu服务器的同一个本地networking上运行一个wiki服务器。 我希望mysub.domain.com打我的迷你服务器,而不是/var/www/mysub文件夹。 经过多次阅读本网站和其他人,我已经设法做到了…种。 我在我的/var/www/mysub/.htacess有以下内容,这是我在另一个SF问题中find的(忘记复制链接)。 RewriteEngine on RewriteCond %{HTTP_HOST} ^mysub.domain.com/* RewriteRule .* http://192.168.xx/ [P,L] 这有效,因为它将mysub.domain.comredirect到Mini的首页。 但是,当然,每个后续链接点击迷你页面也是如此。 我想我明白为什么这样做了(任何以mysub.domain.com开头的mysub.domain.com都会直接指向wiki服务器的头版,并且由于wiki服务器上的后续链接也包含mysub.domain.com ,它总是结束在同一个地方) 我只是不知道该做什么不同。 说实话,我实际上并不了解这些Rewrite行的语法。 我已经看到了无数的configuration条目的例子,并尝试了其中的一些,但是没有真正理解语法,这是在黑暗中的拍摄。 这是一个有用的post,并在阅读这个问题后,我试着将其添加到我的/apache2/httpd.conf文件 <Location /> ProxyPass http://192.168.xx ProxyPassReverse http://192.168.xx </Location> 没有运气。 显然,我有一些学习要做,但在我看来,我想要做的可能很简单。 我错过了什么? 编辑每个评论 我的/etc/apache2/httpd.conf文件 ServerName localhost <VirtualHost *:80> ServerName domain.com ServerAlias www.domain.com DocumentRoot /var/www/domain </VirtualHost> <VirtualHost […]
这个 Apache参考页面和这个 wiki明确指出,为了实现简单的http到httpsredirect,应该使用mod_alias而不是更昂贵的mod_rewrite 。 我有一个使用通配符匹配多个子域的Apache虚拟主机。 我需要所有这些子域名redirect到他们相应的https对应 。 目前,我正在使用以下(与mod_rewrite): <VirtualHost *:80> ServerName lvh.me ServerAlias *.lvh.me RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L] </VirtualHost> 我尝试了以下, 但没有奏效 。 <VirtualHost *:80> ServerName lvh.me ServerAlias *.lvh.me Redirect temp / https://%{HTTP_HOST}/ </VirtualHost> apachevariablesHTTP_HOST在redirect指令中似乎不被识别。 那么,有没有其他方法可以使用mod_alias来达到上述效果呢?
我已经尝试了所有我能想到的东西,但仍然无法正常工作。 我试图从拉里乌尔曼的高级PHP书籍的示例代码工作。 他的指示有点欠缺,所以我不得不做一些研究。 这是我configuration的: username.conf <Directory "/Users/me/Sites/"> Options Indexes MultiViews FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> httpd.conf文件 LoadModule rewrite_module libexec/apache2/mod_rewrite.so DocumentRoot "/Users/me/Sites" <Directory /> Options Indexes MultiViews FollowSymLinks AllowOverride All Order deny,allow Allow from all </Directory> <Directory "Users/me/Sites"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> 的.htaccess <IfModule […]
我们对Location s的子树有一些规则,涉及Require -ing ldap-group和expr -s。 用户被挑战提供login凭证,这是validation。 但是,即使证书正确,并且由于其他原因(例如属于错误的组或来自不正确的IP地址)而导致访问被拒绝,服务器的响应始终为401 – 而不是403。 因此,浏览器不断提示用户“再试一次”…我可以告诉Apache(2.4)使用403,如果在Authorization标题中提供的信息检出,并且是其他规则,拒绝请求? 同样,我知道为什么在authentication成功之后,某些用户的授权被拒绝 – 这是应该的。 我只需要与这些用户沟通,即:“是的,我们相信你是你自己说的那个人,但是你不能访问这个地方。” 看来,mod_rewrite是引发403响应的唯一方法 – 可以通过mod_rewriteexpression式检查LDAP组的成员身份,还是强制将状态从401更改为403? 我在WebMaster的网站上问了这个问题,但没有得到答案 – 那里的人似乎更多的内容为导向。 这是我的当前configuration的相关片段: <Location /foo> Require ldap-group CN=foo,OU=Groups,DC=example,DC=net </Location> 当提供的用户名/密码validation,但要求不满意,我需要返回一个403 … 401当前正在返回。