![Apache2如何为子域名生成随机字符串](https://linux22.com/image/782719/Apache2%E5%A6%82%E4%BD%95%E4%B8%BA%E5%AD%90%E5%9F%9F%E5%90%8D%E7%94%9F%E6%88%90%E9%9A%8F%E6%9C%BA%E5%AD%97%E7%AC%A6%E4%B8%B2.png)
我想对收到的每个请求发出重定向到新的随机生成的子域名。下面您可以找到我的虚拟主机配置。我想重定向到包含一些随机字母数字字符串的子域。如果它是客户端的日期时间+ip 之类的基本信息,那就没问题了,我只需要进行一些指纹识别,不必更复杂。有没有办法通过某个脚本生成它并将其插入到每个请求的虚拟主机中,一个具有随机字符串可用选项的现有文件或某种正则表达式?
<VirtualHost *:443>
ServerName mysite.com
Redirect 302 / https://<randomstring>.mysite.com/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log vhost_combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/site.cert
SSLCertificateKeyFile /etc/apache2/ssl/site.key
</VirtualHost>
我的操作系统是 ubuntu 20.04
答案1
这Redirect
指令要求固定 URL。因此这行不通。
最简单的方法可能是使用 mod_rewrite 将所有请求重定向到脚本,然后让你的脚本,例如redirect.php
PHP 脚本可以访问适当的 RANDOM 函数,生成随机重定向。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /redirect.php [L]
据我所知,使用 mod_rewrite 直接生成随机重定向是不可能的,因为没有提供随机函数。
可能的解决方法:激活mod_unique_id 并且您可以访问非常好的随机环境变量。
然后:
RewriteEngine On
RewriteRule . http://%{UNIQUE_ID}.example.com [R]