标签: rewritecond

如何使 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] 
Run Code Online (Sandbox Code Playgroud)

最后一个几乎有效,但是当额外的文本位于值的末尾时匹配,例如“me2”。仅当itscookie 的确切值为 时me,条件才应为真,之前或之后没有更多内容。

这些值应匹配:

  • 我2
  • [空字符串]
  • [根本没有设置cookie]

mod-rewrite rewrite rewritecond apache-2.2

8
推荐指数
2
解决办法
3万
查看次数

如何重置 Apache 的 RewriteCond 指令?

我有一些这样的 Apache 配置:

# 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]
Run Code Online (Sandbox Code Playgroud)

它应该执行以下操作:

  1. 如果对图像的请求来自badsite.com,则阻止它并显示热链接图像。
  2. 如果收到对图像的常规请求,则重定向到托管在 cdn 子域上的图像。
  3. 否则,如果请求不是文件或目录,则加载网页页面(通过 CodeIgniter)。

但是,我认为第一个RewriteCond适用于重定向规则,而不是盗链规则,因为来自该引用者的图像请求被重定向到 CDN,而不是盗链图像。Apache 文档中的一个示例(本节底部)暗示换行符停止RewriteCond应用,但这并没有发生。

有没有办法“重置”RewriteCond规则,或者我的配置中是否有其他错误?

mod-rewrite rewritecond apache-2.2

6
推荐指数
1
解决办法
4809
查看次数

在 apache 中删除目录的尾部斜杠

www.example.com/advice/现在有以下网址注意到网址末尾的斜杠了吗?我希望将其删除为类似www.example.com/advice. 现在,当我在浏览器中输入该 URL 时,我会被重定向到带有尾部斜杠的 URL,例如使用 curl 也是如此。现在我知道尾部斜杠被添加了,因为建议是一个实际的目录。

[steve@dev dev.www.example.com]$ curl -I  https://dev.www.example.com/advice -k
  HTTP/1.1 301 Moved Permanently
  Date: Fri, 25 Nov 2016 08:20:11 GMT
  Server: Apache/2.4.6 (CentOS)
  Location: https://dev.www.example.com/advice/
  Cache-Control: max-age=0
  Expires: Fri, 25 Nov 2016 08:20:11 GMT
  Connection: close
  Content-Type: text/html; charset=iso-8859-1
Run Code Online (Sandbox Code Playgroud)
[steve@dev dev.www.example.com]$ curl -I https://dev.www.example.com/advice/ -k
HTTP/1.1 200 OK
Date: Fri, 25 Nov 2016 08:21:19 GMT
Server: Apache/2.4.6 (CentOS)
X-Powered-By: PHP/5.6.27
Set-Cookie: flarum_session=mfbou2hcbvcobhncnaqlvl9bm7; Path=/; HttpOnly
X-CSRF-Token: WV69M1oi8POqOcXi6MvwKhbJQ72Tmo2WpFn3oxwq
Content-Length: 10339
Cache-Control: max-age=0
Expires: Fri, …
Run Code Online (Sandbox Code Playgroud)

mod-rewrite rewrite .htaccess rewritecond apache2

3
推荐指数
1
解决办法
6195
查看次数

htaccess 文件中新行的说明: RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/(?:\ Ballot169)?

最近,我注意到 htaccess 文件中的多个位置添加了新行。

RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/(?:\ Ballot169)?
Run Code Online (Sandbox Code Playgroud)

我不明白它的作用,如果可能的话,我希望澄清其目的。

下面的示例显示了它的显示方式。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/(?:\ Ballot169)?
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/(?:\ Ballot169)?
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Run Code Online (Sandbox Code Playgroud)

先感谢您。

.htaccess wordpress pki rewritecond cpanel

3
推荐指数
1
解决办法
6761
查看次数

Apache:不要为某些不存在的文件(常规文件或符号链接)记录错误

我想阻止 Apache为某些经常请求的不相关的不存在文件记录“文件不存在”错误,例如“apple-touch-icon-120x120.png”。这些日志条目使我的日志变得混乱,并且很难看到“真正的”问题。这就是我想出的:

RewriteCond %{REQUEST_URI} ^/apple-touch-icon(-\d+x\d+)?(-precomposed)?\.png$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^ - [redirect=404]
Run Code Online (Sandbox Code Playgroud)

想法:如果请求的文件不是常规文件,也不是符号链接,则 RewriteRule 将导致不记录错误。这类型的作品。

现在我面临以下问题:如果我实际上创建了一个名为“apple-touch-icon-120x120.png”的符号链接,那么我的 RewriteRule 仍然会触发并且我得到 404。没有规则或当我将文件设为常规文件时文件而不是符号链接,文件被正确提供。我认为通过使用!-l标志,只有当请求的文件不是常规文件并且它也不是符号链接时,我才能触发我的规则。但这似乎不起作用......

我在 Apache 的错误日志中没有看到任何可疑的东西。我在这里可能做错了什么?

mod-rewrite symbolic-link rewritecond apache-2.2

3
推荐指数
1
解决办法
111
查看次数

apache httpd 不断向陌生的 IP 发送 http 请求

最近我注意到我的服务器通过netstat -na.

为了找出它发送的内容,我尝试了:

tcpdump -i eth0 host 121.11.76.48 -nnvvXSs 1514
Run Code Online (Sandbox Code Playgroud)

并发现它不断向此位置发送 HTTP 请求:

22:55:21.179353 IP (tos 0x0, ttl  64, id 26103, offset 0, flags [DF], proto: TCP (6), length: 296) 192.168.1.13.58155 > 121.11.76.48.80: P, cksum 0x880b (incorrect (-> 0xd884), 1904784743:1904784999(256) ack 915059568 win 46
    0x0000:  4500 0128 65f7 4000 4006 4ce8 c0a8 010d  E..(e.@.@.L.....
    0x0010:  790b 4c30 e32b 0050 7188 b567 368a b370  y.L0.+.Pq..g6..p
    0x0020:  5018 002e 880b 0000 4745 5420 2f20 4854  P.......GET./.HT
    0x0030:  5450 2f31 2e31 …
Run Code Online (Sandbox Code Playgroud)

security mod-rewrite mod-proxy rewritecond apache-2.2

2
推荐指数
1
解决办法
253
查看次数

仅当 .htaccess 中的图像不存在时才重写

仅当此目录中的文件不存在时,如何使 RewriteCond+RewriteRule 将 site1.com/folder1 更改为 site2.com/folder1。例如:site1.com/wp-content/uploads/2014/03/image.jpg

如果图像 site1.com/wp-content/uploads/2014/03/image.jpg 不存在,则获取 site2.com/wp-content/uploads/2014/03/image.jpg 但如果图像存在,则不要什么都不做。

更新,这里是我需要的代码,感谢大家的帮助)

Options +FollowSymLinks
RewriteEngine ON
RewriteCond %{REQUEST_URI} "/uploads/"
RewriteCond %{REQUEST_FILENAME} .*\.(jpeg|jpg|gif|png)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.+) http://site2.com/$1 [L,R=301]
Run Code Online (Sandbox Code Playgroud)

rewrite .htaccess rewritecond

0
推荐指数
1
解决办法
6330
查看次数