Articles of rewritecond

ProxyPass如果RewriteCond为TRUE

在proxypassconfiguration文件我已经写了这一行 ProxyPass /directory/ ajp://localhost:8009/directory/ 它完美的作品 在htaccess文件 RewriteRule ^seconddirectory/(.*)$ http://domain.com.localhost/directory/$1 [P] P旗意味着L. 这也可以 如果我只使用[L],它也可以。 无论如何,将与ProxyPass相匹配。 但我希望代理通过AJPredirect只有当引用包含/ action如果不是,则不能使用ProxyPass 我试图用RewriteCond做一个条件 RewriteCond %{HTTP_REFERER}% !/action RewriteRule .? – [S=2] RewriteRule ^seconddirectory/(.*)$ https://domain.com.localhost/directory/$1 [L] RewriteRule .? – [S=1] RewriteRule ^seconddirectory/(.*)$ https://domain.com.localhost/404 [L] 如果(引用者不包含/动作),在这种情况下,跳过2行,并被redirect到404页面 如果URL是 HTTPS://domain.com.localhost/seconddirectory/anything 我被redirect到https://domain.com.localhost/404 这是对的 如果引用包含/操作 我不会被redirect到https://domain.com.localhost/directory/ $ 1 这是来自https://domain.com.localhost/controller.php/module/atoken/action (referer)的引用者。 任何build议?

Apache重写从原始请求URL中提取多个数据片段

尝试创build一个仅适用于video文件的Apache重写,直到专用的video服务Web服务器。 它需要重写逻辑从原始请求中提取多个信息,包括HTTP_HOST域名,request_uri和目标文件types。 我在寻求帮助和build议方面做了很多工作,经历了大量的试错……只能接近,似乎无法100%正确。 这是我想要完成的: 传入url示例: https://www.example1.com/images/source/vidtest.mp4 预定的着陆URL: https://www.webvideo.com/example1_video/images/source/vidtest.mp4 因此,一个redirect仅适用于以video文件扩展名types(例如.mp4 )结尾的请求,该types仅提取传入的域名(不是前导www ,或者来自原始HTTP_HOST的尾随.com ),并提取剩余的URI ….并将其redirect到一个新的networking服务器,放入一个以原始主机域名命名的video文件夹(例如example1 ),然后是_video ,然后是附加的原始URI的剩余部分。 这里是我现在有的redirect逻辑: RewriteCond %{HTTP_HOST} ^www\.[^.]+\.com$ RewriteCond %{REQUEST_URI} \.(mp4|mp3|mov|mpg|mpeg|webm|wmv|ogg)$ [NC] RewriteRule ^/(.*)$ https://www.webvideo.com/%1_video/$1 [R=301,NC,L,NE] 这似乎是正确的工作,只拿起这些video文件扩展名types之一传入的请求,它正确地redirect到预期的目标www.webvideo.com域,它也正确地附加后面的URI( $1variables)。 但不幸的是,它将input文件types(如mp4 )放在_video之前的%1variables位置,而不是原始域名。 所以这个例子传入的请求导致redirect到这个: https://www.webvideo.com/mp4_video/images/source/vidtest.mp4 有人可以提出一个更正吗? 我需要做些什么才能将原始域名作为variables存入新的文件夹path中,AND是否只将redirect应用于video文件types,并将尾部URI的其余部分也包含在内? 请注意,将有多个不同域的传入请求(这就是为什么需要为新文件夹path提取域名的原因),这些请求都将被redirect到同一个单独的web服务apache目标。

一个RewriteCond多个RewriteRules

我需要保留所有的用户查询string。 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^$ index.html?page=home&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^about$ index.html?page=about&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^contact$ index.html?page=contact&%1 我怎样才能为所有RewriteRules指定RewriteCond? 我不期待单一的通用控制器RewriteRule,因为这是一个小的静态网站。

我如何重置Apache的RewriteCond指令?

我有一些像这样的Apacheconfiguration: # Image hotlinking rule RewriteCond %{HTTP_REFERER} ^http://badsite\.com/ RewriteRule .*/static/artwork/.*\.(jpg|png)$ /static/images/hotlink.png [L] # Redirects RewriteRule ^static/artwork/(.+)$ http://cdn.mysite.com/artwork/$1 [L,R=301] # CodeIgniter RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L] 它应该做到以下几点: 如果图片请求来自badsite.com ,请将其屏蔽并显示热链接图片。 如果定期请求映像,则redirect到cdn子域上托pipe的映像。 否则,如果请求不是文件或目录,则加载一个网页(通过CodeIgniter)。 不过,我认为第一个RewriteCond应用于redirect规则,而不是盗链规则,因为来自该引用者的图像请求被redirect到CDN,而不是盗链图像。 Apache文档 (本节的底部)中的示例意味着换行符会停止RewriteCond应用,但这不会发生。 有没有办法“重置” RewriteCond规则,或者在我的configuration中有一些其他的错误?

如何使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根本没有设置]