.htaccess 使用多个正则表达式和 GET 值赋值重写
.htaccess rewrite with multiple regex and GET value assignment
当重写规则中没有正则表达式时,设置 GET 变量没有问题。例如,当我执行 sample.html?test=OK
时,以下内容按预期工作,sample.php
中的 test
变量设置为 OK
.
RewriteRule ^sample.html sample.php [NC]
当重写规则中有正则表达式时,问题就出现了。例如,以下内容与上述内容不同。
RewriteRule ^sample-(.*).html sample.php?one= [NC]
我想像 sample-123.html?test=OK
一样执行 URL 而我同时让 one
和 test
在 sample.php
.
中获取它们的值
我在这里阅读了多个问题,但没有人回答此类问题。我看到不同的答案建议使用 RewriteCond
。我试过了,但没有成功,因为我根本不是 .htaccess 方面的专家。
非常感谢。
您需要在此处 QSA
标记:
RewriteRule ^sample-(.+)\.html$ sample.php?one= [L,QSA,NC]
QSA
(查询字符串追加)标志在添加新参数时保留现有查询参数。
当重写规则中没有正则表达式时,设置 GET 变量没有问题。例如,当我执行 sample.html?test=OK
时,以下内容按预期工作,sample.php
中的 test
变量设置为 OK
.
RewriteRule ^sample.html sample.php [NC]
当重写规则中有正则表达式时,问题就出现了。例如,以下内容与上述内容不同。
RewriteRule ^sample-(.*).html sample.php?one= [NC]
我想像 sample-123.html?test=OK
一样执行 URL 而我同时让 one
和 test
在 sample.php
.
我在这里阅读了多个问题,但没有人回答此类问题。我看到不同的答案建议使用 RewriteCond
。我试过了,但没有成功,因为我根本不是 .htaccess 方面的专家。
非常感谢。
您需要在此处 QSA
标记:
RewriteRule ^sample-(.+)\.html$ sample.php?one= [L,QSA,NC]
QSA
(查询字符串追加)标志在添加新参数时保留现有查询参数。