我在哪里可以使用通配符%1和$ 1?

时间:2013-10-31 17:27:14

标签: regex apache .htaccess mod-rewrite rewrite

我正在挖掘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响应。
  4. 第一部分不正常。我可以像上面一样使用%1吗?我可以在RewriteRule的第一部分使用它吗?

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

1 个答案:

答案 0 :(得分:1)

  • %1 - 从RewriteCond捕获并在RewriteRule
  • 的RHS中使用它
  • $1 - 从RewriteRule捕获并在RewriteCondRewriteRule
  • 的RHS的LHS中使用它

参考:Apache mod_rewrite Introduction

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]