gpt4 book ai didi

apache - 让 .htaccess RewriteRule 重定向到脚本 "in current dir"(而不是显式路径)

转载 作者:行者123 更新时间:2023-12-04 13:11:33 24 4
gpt4 key购买 nike

我在 .htaccess 中使用 RewriteRule 将任何不是现有文件的内容重定向到动态处理任何请求的“cms.php”文件(或在适当的情况下输出一些错误消息)。

这是我在 .htaccess 中所做的:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /cms.php [L,QSA]

奇迹般有效。

但是,出于开发目的,我也想在本地 XAMPP 系统上托管同一个站点。在我实际的实时网络服务器上,cms.php 就在文档根文件夹中,因此我可以在那里使用/cms.php。但是在我的本地开发机器上,该站点位于某个子目录中,即/cms.php 不是正确的路径。

我还尝试了“cms.php”(前面没有/)以及“./cms.php”(希望“.”表示当前目录)但无济于事。只有当我在 RewriteRule 中明确指定/the/correct/subdir/cms.php 时,它才能正常工作,但显然这仅在开发机器上有效,而在我的实时网络服务器上无效。

我可以以某种方式使用智能路径或 mod_rewrite 变量或其他东西,以便 .htaccess 了解它需要重定向到与 .htaccess 本身所在的目录相同的 cms.php 文件吗?

最佳答案

通常,您只需设置 RewriteBase到 dev 目录并保留规则目标的前导斜杠:

RewriteEngine On
RewriteBase /subdir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ cms.php [L,QSA]

但是,如果这还不够好,并且您希望能够随意移动 htaccess 文件而不必一直更改基数,您可以尝试通过检测任意基数来做一些疯狂的事情:
RewriteCond %{ENV:URI} ^$
RewriteRule ^(.*)$ - [ENV=URI:$1]

RewriteCond %{ENV:BASE} ^$
RewriteCond %{ENV:URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$
RewriteRule ^ - [ENV=BASE:%2]

在 htaccess 文件的最顶部,然后使用 BASE环境变量:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ %{ENV:BASE}cms.php [L,QSA]

关于apache - 让 .htaccess RewriteRule 重定向到脚本 "in current dir"(而不是显式路径),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21027343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com