是否可以在HTACCESS文件中创建或调用变量

is it possible to create or call a variable in htaccess file

提问人:father father 提问时间:4/29/2023 最后编辑:father father 更新时间:5/5/2023 访问量:73

问:

我之所以问这个问题,是因为......在我想使用的文件中,将我的更改为一些随机字符串,即如果我从浏览器请求,我希望 URL 在浏览器中显示如下: .我想是动态的,随机变化。PS 我根本不想出现在 URL 中,只想出现在随机生成的字符串中。.htaccessRewriteRuleindex.phpwww.example.com/index.phpwww.example.com/abcdefghij1234abcdefghij1234index.php

这是我在文件中设置的规则,它不起作用。请帮帮我.htaccess

RewriteEngine On

RewriteBase /

RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteRule ^generate_random_string$ - [E=RANDOM_STRING:%{TIME}%{REMOTE_ADDR}]

RewriteRule ^generate_random_string$ - [L]

RewriteRule ^%{ENV:RANDOM_STRING}$ index.php [L]

RewriteCond %{THE_REQUEST} ^GET\ /index\.php [NC]

RewriteRule ^index\.php$ /%{ENV:RANDOM_STRING} [L,R=301]

感谢您的支持。


感谢您的回复。很抱歉这么晚才回复,我被学校项目和其他任务抓住了。回到我的问题。

实际上,我正在玩 PHP,我编写了以下代码并将其上传到我的 cpanel。

$domain = $_SERVER['HTTP_HOST'];
$path = "/index.php";
$destina_url = "https://{$domain}{$path}";
header("Location: $destina_url");
exit();

我将上述代码保存为公共文件夹中的代码.php。我被重定向到 www.mydomain.com/index.php。此外,我继续在 htaccess 中使用以下代码重写 url

RewriteEngine On
RewriteBase /

RewriteRule ^abcdefghijke12345$ index.php [L]
RewriteCond %{THE_REQUEST} ^GET\ /index\.php [NC]
RewriteRule ^index\.php$ abcdefghijke12345 [L,R=301]

因此,当我在浏览器中启动完整的 url 即 (www.mydomain.com/code.php) 时,我被重定向到 (www.mydomain.com/abcdefghijke12345),这是所需的结果。

但是,我手动将 abcdefghijke12345 输入到 .htaccess 中,这对我来说是静态的,我想要的是 abcdefghijke12345 来自动生成随机字符串。

因此,我在代码.php中添加了以下代码:

$domain = $_SERVER['HTTP_HOST'];

$path = bin2hex(random_bytes(128));

$destina_url = "https://{$subdomain}.{$domain}/{$path}";
header("Location: $destina_url");
exit();

使用此代码,当我在浏览器中再次启动(www.mydomain.com/code.php)时,我从浏览器收到错误 403。所以,我很好奇是否可以在我的代码 .php 中创建一个服务器变量并在 .htacess 中引用它,如果我问得对,我不知道。请原谅我的英语。

谢谢。

正则表达式 .htaccess url mod-rewrite

评论

0赞 James 4/29/2023
这是不可能的。stackoverflow.com/a/30399556/2844703
1赞 MrWhite 4/29/2023
@james 您链接到的问题与此问题无关。OP 在这里试图做的事情是可能的(虽然“为什么”是另一回事,但它确实感觉像是“XY 问题”?!
1赞 MrWhite 4/29/2023
这里的实际用例是什么?您打算在内部链接到哪个 URL?这个“随机数”有什么意义,还是干脆被“忽略”了?这个“随机数”是针对特定用户保留的,还是字面上的“随机”针对每个请求?(您的规则需要一些持久性。
0赞 arkascha 4/29/2023
您可以使用 a 生成随机字符串 (httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritemap),但是我不明白您在这里要实现什么。这只有在首先实际请求时才有效,因此客户端已经知道并请求了“非随机”URL。如果您真的想“屏蔽”请求的实际 URL,那么您需要在客户端使用它们之前更改您发送的链接。这不应该在协议级别完成,而应该在应用程序逻辑中完成。RewriteMapindex.php
0赞 father father 5/4/2023
@arkascha,因为我还需要更多澄清。我发布了我的其他问题和代码作为答案,因为这个评论空间不足以让我更好地表达它。请看一下。谢谢

答: 暂无答案