$val = substr(str_shuffle(str_repeat("abcdefghijklmnopqrstuvwxyz0123456789", 12)), 0, 12);
setcookie('sub' , $val , time() + (86400) , '/');
example.com/folder/file.php
应重写为$_COOKIE['sub']
的值,例如example.com/6df1fcb7aba6/file.php
我怎么能那样做呢?
我试过这个:
RewriteCond %{HTTP_COOKIE} !^.*sub.*$ [NC]
RewriteRule %{HTTP_COOKIE} !^.*sub.*$/(.*) folder/$1
,但不起作用
1条答案
按热度按时间eoigrqb61#
您可以使用mod_rewrite在根
.htaccess
文件中执行以下操作:上面说:
1.给定
/folder/file.php
的请求sub
存在一个12字符的字母数字(小写)值。1.将请求重写为
/<sub-cookie-value>/file.php
%1
反向指涉包含sub
Cookie的值,只要它符合12个字符英数字元(小写)值的准则。$1
反向引用只包含从RewriteRule
* 模式 * 捕获的file.php
。RewriteRule
pattern(第一个参数)是一个正则表达式,它与请求的URL路径匹配,因此%{HTTP_COOKIE}
(被视为文字字符串)永远不会匹配,因此该规则不执行任何操作。但是,第三个参数(flags)的语法完全无效,因此可能导致500内部服务器错误(“bad flags delimiter”)。RewriteCond
指令正在检查字符串sub
* 没有 * 出现在Cookie
HTTP请求头中的任何位置,这不是您想要做的。您需要检查sub
是否存在 * 并 * 提取该值。