Re: [users@httpd] rewrite rule

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Axel-Stéphane SMORGRAV wrote:
 Could you give some explanations wrt. your RewriteCond ? I have never seen this kind of expressions before.

Yes. \1 is a regEx internal back reference containing everything matched
in the first group (/test/.+)

So assuming a request of /test/index.html (=value of $1) from http://example.com/test/index.html (referer), the TestString
(left) is
http://example.com/test/index.html<>/test/index.html

The regEx '(/test/.+)<' would match '/test/index.html<' and capture the part '/test/index.html' in a back reference. Now the pattern matches the > from the TestString followed by the value of the first back reference from within that regEx, which is '/test/index.html'.

So http://example.com/test/index.html<>/test/index.html (testString) would match against the pattern /test/index.html<>/test/index.html, the RegEx-Engine returns true. The result is now negated in mod_rewrite by the exclamation mark resulting in false which would abort this RewriteRule.


RewriteEngine On
RewriteCond %{HTTP_REFERRER}<>$1 !(/test/.+)<>\1$
RewriteRule ^(/test/[^/]*\.(html?|php))$ /test-redir.php?page=$1 [L,NS]

--
Robert

---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx
  "   from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx
For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx



[Index of Archives]     [Open SSH Users]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Squid]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux