.htaccess - 在网址后添加随机文字

时间:2015-02-13 16:22:39

标签: .htaccess

我创建了一个.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>    

我怎么能做到这个

3 个答案:

答案 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