1

我一直在研究 Apache 语法,但我不明白在哪里可以使用$1%1通配符。我有下一个代码:

RewriteCond %{HTTP_COOKIE} !PHPSESSID=(.*);.*$ [OR]
RewriteCond %{REQUEST_URI} !^/.*/usuarios/%1/.*$
RewriteCond %{REQUEST_URI} ^/.*/usuarios/
RewriteRule \.(gif|jpe?g|png|wbmp)$ - [R=404,L]

它的意思是:

  1. 如果用户没有关联 session_id 或者他没有访问/.../usuarios/session_id/....
  2. 并且用户正在访问 `/.../usuarios/...
  3. 然后,重定向到 404 响应。

第一部分工作不正常。我可以%1像上面那样使用吗?我可以在第一部分使用它RewriteRule吗?

如果没有,我该如何实现该行为?

4

1 回答 1

1
  • %1- 从 RHS 中捕获RewriteCond并使用它RewriteRule
  • $1- 从左轴或右轴捕获RewriteRule并使用它RewriteCondRewriteRule

参考:Apache mod_rewrite 简介

PS:你的情况RewriteCond %{REQUEST_URI} !^/.*/usuarios/%1/.*$是行不通的,因为你不能%1在 RHS 中使用RewriteCond

更新:您可以尝试这样的事情来使用反向引用变量

RewriteCond %{HTTP_COOKIE} !PHPSESSID=(.+) [OR,NC]
RewriteCond %{HTTP_COOKIE}:%{REQUEST_URI} ^PHPSESSID=(.*?);:(?!.*?/usuarios/\1).* [NC]
RewriteRule ^.*?/usuarios/.+?\.(gif|jpe?g|png|wbmp)$ - [R=404,L]
于 2013-10-31T17:29:24.590 回答