Articles of mod rewrite

Apache更改代理请求的URL重写

我有代理请求的问题。 我需要启用Apache的mod_proxy为我的子域名,但我忘了从mydomain.com设置允许,这是从所有的允许…是的,我创build了所有世界的开放代理…所以,现在当我从所有设置拒绝,从mydomain.com允许我得到的错误,一些客户端已被拒绝,因为服务器configuration这是好的,并在access.log我已经得到一些与返回代码403这也是很好的请求。 这是要求之一。 例如 GET http://www.google.com HTTP/1.1 403 462 "-"Mozilla/4.0 (compatible; MSIE 6.0;) 我的问题是我可以修改正在对我来一些另一个url的url? 我可以更改此url“google.com”为“mydomain.com”?

mod_rewrite除了两个文件导致循环

我试图build立一个网站,以允许创build一个信号量文件closures该网站。 我想遵循的逻辑是: 当信号量文件存在时 并且该请求不适用于/style.css或/favicon.icon 显示/closed.html的内容 我有1和3工作,但是我的例外2导致处理循环时style.css或favicon.ico请求。 这是我最近的尝试: RewriteEngine on RewriteCond %{REQUEST_URI} !^/style.css RewriteCond %{REQUEST_URI} !^/favicon.ico RewriteCond /usr/local/etc/site/closed -f RewriteRule ^.*$ /closed.html [L] 这是在一个VirtualHost块中,而不是在一个目录中。 没有.htaccess文件在播放。 我最近也尝试过,基于我在其他地方find的答案,但结果是一样的(循环): RewriteCond %{REQUEST_URI} ^/style.css [OR] RewriteCond %{REQUEST_URI} ^/favicon.ico RewriteRule ^.*$ – [L] RewriteCond /usr/local/etc/site/closed -f RewriteRule ^.*$ /closed.html [L] 我希望/style.css或/favicon.ico的请求无法匹配前两个重写条件之一,这会阻止URI被重写,这应该会停止mod_rewrite迭代。 然而,mod_rewrite似乎认为在这些情况下URI已被重写,并且重复遍历规则(以及再次和重复)。 除了style.css或favicon.ico以外,上述方法在所有情况下均正常工作。 在这些情况下,我超过了循环限制。 当有人要求style.css或favicon.ico时,我在这里丢失什么导致重写迭代停止? 编辑 :这是一个loglevel 9例子,当请求到达/style.css时,使用第一个规则集会发生什么。 这只是前两个迭代..它继续相同的循环,直到达到极限。 2001:4900:1044:0:145f:826e:6436:dc1 – – […]

带有Tomcat的Apache httpd mod_rewrite导致JSESSIONID丢失

所以我正在开发一个Java Web应用程序,为此我最近实现了一个依赖于JSESSIONID cookie识别用户的authentication模块。 我在eclipse上testing了一个本地的tomcat,并且一切正常……直到我用一些更高级的安装结构在我们的VPS(Centos)上部署应用程序: Apache HTTP服务器 几个虚拟主机 所述webapp被安装在具有mod_jk的虚拟主机中。 目前通过“sub.hostname.com/WEBAPP_NAME/home”进行访问,但应该以“sub.hostname.com/home”提供。 上面的设置在authentication更新之前并不是什么大问题(顺便说一下,之前的tomcat安全选项处理访问)。 旧的VirtualHost看起来像这样,工作得很好: <VirtualHost *:80> ServerName sub.hostname.com RewriteEngine on RewriteRule ^/(.+)$ /WEBAPP_NAME/$1 [L,PT] RewriteRule ^/$ /WEBAPP_NAME/home [L,PT] JkMount /* worker </VirtualHost> 问题:部署之后,validation将不起作用,因为JSESSIONID cookie没有写入。 我删除了RewriteRules并通过'sub.hostname.com/WEBAPP_NAME/home'访问应用程序,在那里一切正常,我收到一个cookie。 从这些观察,我猜这个问题是由于URL被重写,而Servlet不会将cookie写入正确的path(?)如果是这样的话,我应该尝试从应用程序内写入cookie到其他path? 问题:我接受关于解决scheme的所有build议。 请裸露在我身上,因为我(显然)不是服务器设置的专家。 有没有什么具体的设置,可以在apache或tomcat中处理呢? 还是我最初select了错误的安装架构? 提前感谢!

Lighttpd将子域重写为子文件夹

我有一个服务器(本身在一个子域)与通配符DNS指向它。 服务器运行Lighttpd和PHP。 我需要http://any-subdomain.server.example.com重新写入http://server.example.com/site/any-subdomain ,并从那里提供服务。 它必须对用户完全透明。 这是我的相关configuration: $HTTP["host"] =~ "^(.*)\.server\.example\.com$" { url.rewrite-once = ( "^(.*)" => "/site/%1/$1" ) } 它似乎工作除了子文件夹,其中redirect到subdomain.server.example.com/site/subdomain/subfolder ,然后404的。

漂亮的固定链接不工作Apache,WordPress,国防部重写

我正在尝试更改Wordpress中的固定链接,所以URL使用的是后缀名称。 我试图直接修改httpd.conf,但是Apache似乎没有parsingURL。 我一直在找不到页面。 由于重写日志是空的,我看不到任何redirect的尝试。 我已经尝试了几个重写条件,已知在标签之外工作,但日志仍然是空的。 <Directory "/var/www/user1/example.com/public_html"> Options +Indexes FollowSymLinks +ExecCGI AllowOverride All Order allow,deny Allow from All <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /blog/ RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /blog/index.php [L] </IfModule> </Directory> 看起来RewriteRule和RewriteCond在放置标签时不起作用,因为当我将这些指令移动到标签之外时,apache会正确parsingURL,页面确实有一些内容。 不过,显示的页面不再有任何结构; 似乎某些CSS文件没有得到加载或可能重写执行不正确。 我也检查了重写日志,并注意到参数RewriteBase通过请求没有做任何事情: 110.175.55.89 – – [28/Jun/2014:15:52:00 +1000] [dev.ebizimate.com/sid#7f6cbbab7738 [rid#7f6cbbd07c38/initial] (2) init rewrite engine […]

为什么我不能将url中的“index.html”redirect到一个php文件?

我陷入了一个大问题,但让我从一个部分开始。 我正在为此工作: RewriteRule ^(.*)index.html $1 [R=301,L] 虽然这不: RewriteCond %{REQUEST_FILENAME} index\.html [NC] RewriteRule ^(.*) main.redirect.php [QSA,L] 而这个也不行: RewriteRule ^(.*)index.html main.redirect.php [NC,QSA,L] 有任何想法吗? 我使用这个作为主要问题的一部分,客户希望我只对以下一个或所有条件进行一次redirect www缺失(放在前面) index.html在最后(删除它) CAPS存在(转换为小写) 为了达到这个目的,我创build了一个能完成所有工作的php文件,我需要在上面的任一条件中调用它(php文件将会redirect)。 <?php $sURL = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; echo '$sURL = ' . $sURL . '<br />'; $sURL = strtolower($sURL); if (substr($sURL, 0, 4) != 'www.') { $sURL = 'www.' . […]

Apache内部RE-WRITE取代301redirect

我需要内部重写(由于部分CMS内容重组),因为我目前有一个永久的301redirect,这是杀了search引擎优化。 我不希望用户浏览器redirect或了解内容位置更改。 案例一 www.example.com internally rewritten to www.example.com/home/home.html 案例二 www.example.com/home.html internally rewritten to www.example.com/home/home.html 这是我写的内部重写案例之一的path: RewriteRule ^/$ /home/home.html [NC,L] 现有的redirect规则(工作正常)将被replace为: RewriteRule ^/$ http://www.example.com/home/home.html [R=301,L] 任何意见,我要去错了,欢迎!

Apache mod_proxy在空格处切断URL

我在www.example.com/.htaccess上有以下代理规则 RewriteEngine On RewriteRule ^(.*)$ http://www2.example.com/$1 [P] 请求 http://www.example.com/images/properties/resized%20pics/1_thumb.jpg 在www2上的服务器日志中显示为 /images/properties/resized 我尝试了各种标志[NE,P],[B,P]但是不能得到这个工作。 还尝试引用RewriteRule的第二个参数。 我已经看到这个问题,但它处理500我得到404。 使用mod_proxy通过%20代理URL时的Apache 500 tcpdump -A -s 0 port 80 and host www2.example.com | grep resized tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes E…%[email protected]…I…ls…Pu….<6.P.@).f..GET /images/properties/resized/ HTTP/1.1

Apache mod_rewrite – 将所有stream量redirect到另一个域,5个文件夹除外

我们正在逐渐将客户网站迁移到一个新的系统和域名。 与此同时,我们需要两个站点都能正常运行 – 但是可以共享同一个域的多个位。 我现在已经把主域名指向了新的服务器 – www.newserver.org 在这台服务器上,我需要Apache将任何不在允许文件夹列表中的请求redirect到旧服务器 – 现在生活在:www.oldserver.org(保留域后的path)。 我还需要新的服务器访问时通过它的IP地址访问,而无需redirect。 我最好的尝试在Apacheconfiguration: DocumentRoot /var/www RewriteEngine on RewriteCond %{REQUEST_URI} !^/landing/ RewriteCond %{REQUEST_URI} !^/admin/ RewriteCond %{REQUEST_URI} !^/user/ RewriteCond %{REQUEST_URI} !^/sites/ RewriteCond %{REQUEST_URI} !^/scripts/ RewriteCond %{HTTP_HOST} ^www.newserver.org$ RewriteRule ^(.*) http://www.oldserver.org/$1 [NC,R=301,L] 任何人都可以协助正确的RewriteCond&订购? 此刻,所有请求 – 即使是指定的文件夹都是redirect的。

未find时,Apache2从另一个文件夹中检索文件

在处理应用程序重写时,我想保留旧的应用程序webroot文件作为回退,当没有find新的文件。 有2个应用程序: <VirtualHost *:80> ServerName legacy.dev DocumentRoot /www/legacy/webroot </VirtualHost> <VirtualHost *:80> ServerName new.dev DocumentRoot /www/new/webroot </VirtualHost> 如何设置new.dev VirtualHost来检索DocumentRoot中存在的文件,但是如果找不到文件,请检索legacy.dev DocumentRoot中的文件?