我创建了一个.htaccess,可以在url之后添加?示例 (site.com/page1?EXAMPLE)
但我想在那里添加随机数字或字母 (site.com/page1?jsf6755saf)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} !(^|&)EXAMPLE(&|$) [NC]
RewriteRule . %{REQUEST_URI}?EXAMPLE [L,QSA,R=302,NE]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
我怎么能做到这个
答案 0 :(得分:2)
将您的第一条规则更改为:
RewriteCond %{QUERY_STRING} ^$
RewriteRule . %{REQUEST_URI}?%{TIME} [L,R=302,NE]
换句话说,如果QUERY_STRING
尚不存在,则在其中添加%{TIME}
值。
答案 1 :(得分:1)
您将不得不使用RewriteMap之类的东西在Apache中提供随机文本。
如果您想控制放在那里的文字,那就是唯一的方法。
有一个 MapType rnd 可以将随机文本拉入变量。
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritemap
以下是使用示例。 使用此结构创建一个文本文件,并将随机字符串连接在一起。
map.txt的内容
##
## map.txt -- rewriting map
##
random r3434fd|ssfsfs334|3542tgwet|w34rf235|32gvsr3|345343r|35fgew54e|bff534!q
注意:这不是一个完整的规则。只是一个示例,向您展示如何使用随机变量。只需使用%{servers:random}
附加您的规则
RewriteMap servers rnd:/path/to/file/map.txt
RewriteRule . %{REQUEST_URI}?%{servers:random} [L,QSA,R=302,NE]
然后,Apache将从map.txt中随机拉出其中一个字符串,以便在您想要的查询字符串中使用。
如果您只是想要随机文字。
您还可以使用UNIQUE_ID
RewriteRule . %{REQUEST_URI}?%{UNIQUE_ID} [L,QSA,R=302,NE]
会出现像qOr5tEBvcm8AAE-VoiUAAAAQ
答案 2 :(得分:1)
只有第一个回答的注释:巴拿马杰克 - 非常感谢你。
RewriteMap服务器rnd:/path/to/file/map.txt
请勿将其放入.htaccess文件中(它会产生内部错误)。
只在你的一个* .conf中安装它(例如apache2.conf)。
将$ {servers:random}替换为$ {servers:random}
只有那 - 它对我有用。
文档来源:https://httpd.apache.org/docs/current/rewrite/rewritemap.html#rnd