我正在挖掘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]
这意味着:
/.../usuarios/session_id/...
。第一部分不正常。我可以像上面一样使用%1
吗?我可以在RewriteRule
的第一部分使用它吗?
如果没有,我该如何实现这种行为?
答案 0 :(得分:1)
%1
- 从RewriteCond
捕获并在RewriteRule
$1
- 从RewriteRule
捕获并在RewriteCond
或RewriteRule
PS:您的条件RewriteCond %{REQUEST_URI} !^/.*/usuarios/%1/.*$
不起作用,因为您无法在%1
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]