regex - 使用 .htaccess 重定向到动态相对路径?

标签 regex .htaccess redirect

是否可以使 .htaccess“理解”动态相对路径并正确重定向到它们?

我的设置如下:

http://domain.com/htroot/aaa/xyz
http://domain.com/htroot/bbb/xyz
http://domain.com/htroot/ccc/xyz

等等。为了举例,“htroot”包含我需要修改的.htaccess。以下子级别(aaa、bbb、ccc)可以是任何 a-z0-9 名称,并且文件夹具有 index.php(或要重定向到的任何其他 .php)。 xyz 应该作为某种参数,请参阅下一部分。 xyz 部分在文件系统上不作为“物理”文件夹或文件。

我需要实现的是:当你使用url访问时

http://domain.com/htroot/aaa/xyz

它从以下位置获取内容

http://domain.com/htroot/aaa/ (or http://domain.com/htroot/aaa/index.php, either way)

index.php 启动的地方 -> 我可以获取从 REQUEST_URI 解析的 xyz 并处理它以提供它指定的正确内容,而页面的 URL 保持为 http://domain.com/htroot/aaa/xyz,当然。

到目前为止,如果每个子级别(aaa 等)都有自己的 .htaccess,我已经成功实现了这一目标,但我需要一个在 htroot 中只有一个 .htaccess 的子级别处理这个。我猜测这可能与 .htaccess 中的 $0 参数有关,但不确定。

最佳答案

您可能想要执行如下操作:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)$ /htroot/$1/index.php?data=$2 [L]

如果第一个通配符匹配 (.*)aaa,第二个通配符匹配 (.*)xyz (htroot/aaa/xyz) 它将从

获取内容

htroot/aaa/index.php?data=xyz

您将能够使用$_GET['data']在index.php中获取值xyz

关于regex - 使用 .htaccess 重定向到动态相对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9591100/

相关文章:

python - 正则表达式匹配字符串中的精确模式

javascript - 正则表达式在函数中是如何工作的?

python - 如何在数据框列中过滤并仅保留 6 位数字

.htaccess - Nginx:在 https 上将非 www 重定向到 www

.htaccess - 允许/拒绝使用 .htaccess 进行图像热链接

javascript - 如何从 URL 创建回传标签?

javascript - 带有字符串值的 html anchor 标记重定向

bash - 如何将程序的 stdout 和 stderr 重定向到一个文件,并将相同的 stderr 重定向到另一个文件?

javascript - 匹配直到字符的未转义版本

javascript - htaccess RewriteRule 不加载 js-css 库