Articles of mod rewrite

ProxyPass只有在文件不存在的情况下

我见过这个例子: RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ balancer://app_cluster%{REQUEST_URI} [P,QSA,L] 我需要一个类似的东西,当一个静态文件不存在时,将委托给mod_proxy(即做一个ProxyPass)。 它可行吗?

Apache RewriteRule和斜线(%2F)

我有以下的RewriteRule : RewriteRule ^like/(.+)$ ask.php/$1 对于像这样的请求,它可以正常工作 /like/someting+here/something+else 但是对于其中一个path部分包含转义斜线( %2F )的请求,服务器会吐出一个404 Not Found错误: /like/one%2Ftwo+things/ 有没有什么办法解决这一问题? 我尝试了[B]和[NE]标志(独立和一起),但没有任何工作。 编辑:我也试过: RewriteRule ^like/ ask.php # or RewriteRule ^like/(.*) ask.php 所以它不一定要匹配斜线。 它仍然没有工作。

Apache重写了多个条件

我有一个从旧域名(例如olddomain.com)迁移到新域名(例如newdomain.com)的网站。 对于search引擎优化的原因,我需要重写所有的网站stream量主要新的域名(如www.newdomain.com)。 不幸的是,我不知道如何添加多个ORtypes的重写条件。 看来,所有的条件,下面的示例代码,我得到一个AND条件。 <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName newdomain.com ServerAlias www.newdomain.com ServerAlias olddomain.com ServerAlias www.olddomain.com DocumentRoot /var/www/newdomain.com/www/ <Directory /> Options FollowSymLinks AllowOverride All </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn RewriteEngine on RewriteCond %{HTTP_HOST} ^olddomain.com [NC] RewriteCond %{HTTP_HOST} ^www.olddomain.com [NC] RewriteCond %{HTTP_HOST} ^newdomain.com […]

转移80至443在Nagios的困境

我可能只是需要一些额外的见解,因为我没有看到我要去哪里错了。 我使用SSL证书来保护我们的nagios服务器。 我们想特别要求所有通过nagios的stream量(如2个用户,lol)使用SSL。 所以我想,哦,mod_rewrite +在.htaccess重写规则,对不对? 所以我进入了DocumentRoot并做了一个vi .htaccess(一个还不存在),然后我遵循下面的规则: RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://our.server.org/$1 [R,L] 这绝对没有。 纳达 Whhhyy .. 注意:httpd.conf中的AllowOverride全部打开。 另外,我validation了这个模块没有被注释掉,但是注意,我找不到安装的mod_rewrite模块,所以我从另一个服务器上复制了它,并把它放在modules / mod_rewrite.so中。 这很奇怪,因为它在httpd.conf文件中启用,但是在模块中不存在… 我是坏人:(

在mod_rewrite中掩盖url

有没有办法做一个mod_rewrite从一个域到另一个,但始终保持相同的浏览器URL? 这就是我要的: 用户input诸如bacon.com之类的内容,并以example.com/bacon结尾,但浏览器URL始终保留为bacon.com? 我基本上想要做一个mod_rewrite,同时掩盖的URL。 对不起,没有想像力的示例域,但它仍然只有上午10点…我检查了很多其他的答案,但他们通常涉及mod_rewrites在同一个域。 他们没有处理这个事实,bacon.com已经是example.com的ServerAlias。

Apache2:400重写规则的错误请求,错误日志中没有任何内容?

这使我疯狂。 背景:我正在使用Mac OS X 10.6附带的内置Apache2&PHP 我有一个虚拟主机设置如下: NameVirtualHost *:81 <Directory "/Users/neezer/Sites/"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> <VirtualHost *:81> ServerName lobster.dev ServerAlias *.lobster.dev DocumentRoot /Users/neezer/Sites/lobster/www RewriteEngine On RewriteCond $1 !^(index\.php|resources|robots\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA] LogLevel debug ErrorLog /private/var/log/apache2/lobster_error </VirtualHost> 这在/private/etc/apache2/users/neezer.conf 。 我在lobster project中的代码是使用CodeIgniter框架的 PHP。 试图加载http://lobster.dev:81/给我: […]

有没有办法在“mod_ssl”之前访问“mod_rewrite”?

场景: 我有2个域名: thinkingmonkey.me和thinkingmonkey.com 。 整个网站是通过https访问。 从通用名为thinkingmonkey.me的CA购买证书。 对于http : www.thinkingmonkey.com , thinkingmonkey.com和www.thinkingmonkey.me有一个虚拟主机,并使用_mod_rewrite_规则redirect到https://thinkingmonkey.me 。 thinkingmonkey.me有其独立的虚拟主机。 一切工作正常。 https : 即www.thinkingmonkey.com , thinkingmonkey.com和www.thinkingmonkey.com有一个虚拟主机,并使用_mod_rewrite_规则redirect到https://thinkingmonkey.me 。 thinkingmonkey.me有其独立的虚拟主机。 问题 现在,如果https://www.thinkingmonkey.com或https://thinkingmonkey.com被访问, 在mod_rewrite执行https://thinkingmonkey.me重写之前, mod_ssl会发生作用,并且发生TLS握手。 由于证书中的通用名称是在thinkingmonkey.me中 , 因此此连接是不受信任的警告在浏览器中显示。 除非我通过接受证书完成握手,否则不会被redirect到thinkingmonkey.me 。 这是非常烦人的。 所以, 有没有办法在mod_ssl之前访问mod_rewrite ? 要么 我必须购买一个单独的证书来摆脱这个?

301'万维网'的噩梦。 我该如何改变?

大概六个月前,我决定最好把我的网站放在裸露的域名上,让我们只说'example.com'。 我做了所有网站告诉我的指示,从www.example.com到example.com添加301redirect。 现在,我希望不要使用裸域,并在www.example.com下build立我的网站。 在阅读本网站和网站如yes-www.org的各种问题后,我意识到长期使用“www”会更好。 为我的主要网站。 现在尤其如此,因为网站规模越来越大,必须分散到不同的网站(例如news.example.com,research.example.com,community.example.com等)。 有了新的域名结构,主要内容应该在www.example.com上列出。 问题是,将旧的www.example.com的301redirect移除到example.com,并将example.com中的一个添加到www.example.com将会导致对仍在caching中的站点进行无限循环的redirect! 可悲的是,这是一个大型网站,每天有数以万计的观众,不能以自动化的方式撤消 。 我唯一能想到的就是在一个域名“www1.example.com”上设置我的主网站,从example.comredirect到www1.example.com,并在某种程度上及时迁移回www.example.com? 我怎么能做到这一点,虽然redirect似乎永久 ? 总之,我希望find一种自动化的方式来回到使用www.example.com而不是裸域,example.com,我真的不知道如何能够再次做到这一点。

如何从一个Apache服务器传递请求到另一个

我有两个启用了mod_proxy的Apache服务器。 我想知道如何使用相同的端口(80)将“请求”从“Apache服务器A”传递到“Apache服务器B”。 在“服务器A”与内部IP:192.168.0.5我configuration了DNS,我也用它作为我的邮件服务器。 在“服务器B”与内部IP:192.168.0.10我有我自己的云服务器。 今天当我访问wwww.mydomain.com或www.mydomain.com/webmail一切正常,因为内容都在“服务器A”,我需要的是当有人试图访问owncloud.mydomain.com他们可以访问我的服务器B而不会将它们redirect到owncloud.mydomain.com:81等其他端口,我只想使用端口80。 其实我得到一个redirect循环,因为当我尝试redirect,我猜“服务器A”是由自己得到相同的请求。 我已经设置我的虚拟主机在同一个“服务器A”工作,我想要“redirect”到另一台服务器使用相同的端口和URL(owncloud.mydomain.com)。 我不想使用另一个端口redirect。

如何使RewriteCond%{HTTP_COOKIE}完全匹配cookie值?

我如何使我的规则匹配cookie的确切值? 我试过了: RewriteCond %{HTTP_COOKIE} ^its=me$ [NC] RewriteCond %{HTTP_COOKIE} its=^me$ [NC] RewriteCond %{HTTP_COOKIE} its="me" [NC] RewriteCond %{HTTP_COOKIE} its=me [NC] 最后几乎可以工作,但是当额外的文本在值的末尾时匹配,比如“me2”。 这个条件应该是正确的,只有当its cookie具有me的确切值时,在之前或之后没有更多的东西。 这些值不应该匹配: 您 ME2 [空string] [cookie根本没有设置]