gpt4 book ai didi

regex - 如何为 htaccess 正则表达式定义 url 占位符 $1

转载 作者:行者123 更新时间:2023-12-01 12:52:09 27 4
gpt4 key购买 nike

我在学习的过程中在htaccess中写了如下内容:

RewriteRule ^/test(a-zA-z)\.htm$ /test$1.htm

test2.htm 仍然映射到 test1.htm

我假设 $1 没有被正确地视为变量占位符,因为 $ 没有被转义。正确的写法是什么(为了测试目的,test2.htm 被映射到自身,test2.thm)

最终,我试图映射如下内容:

domain.com/$1/$2domain.com/?a=$1&b=$2

domain.com/$1domain.com/?a=$1

当第一个 url 映射到第二个时,我不希望浏览器的 URL 发生变化。我知道这在 C# Global.asax 文件中是可能的(使用 routes.MapRoute),但不确定如何在 中实现>php.

最佳答案

从最复杂的到不太复杂的进行消除。

  • 处理前 2 个参数,然后是 QSA 指令(重要)以保留所有 GET 变量,然后是 L 指令以停止所有,<
  • 然后处理第一个参数,然后是 QSA 指令(重要)以保留所有 GET 变量,然后是 L 指令停止所有,

这应该有效:

RewriteRule ^/([a-zA-z0-9]+)/([a-zA-z0-9]+)$ /?a=$1&b=$2 [QSA,L]
RewriteRule ^/([a-zA-z0-9]+)$ /?a=$1 [QSA,L]

哦对了:

如果这还不够:

两个提示:

如果您在托管环境中(=如果它是您自己的服务器并且可以修改虚拟主机,不仅是 .htaccess 文件),尝试使用 RewriteLog 指令:它可以帮助您追踪此类问题:

# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On

我最喜欢的正则表达式检查工具:

http://www.quanetic.com/Regex (不要忘记选择 ereg(POSIX) 而不是 preg(PCRE)!)

关于regex - 如何为 htaccess 正则表达式定义 url 占位符 $1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11606634/

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