我的.htaccess中有很多RewriteRules,看起来像这样
RewriteRule ^something/(\d+)/start /index.php?ix=$1
RewriteRule ^embed/something/(\d+)/start /index.php?ix=$1&fEmbed=1
这两者之间的唯一区别是领先的“嵌入/”,所以我认为将这些组合成一个RewriteRule是有益的。我的尝试被困在
RewriteRule ^(embed/)?something/(\d+)/start /index.php?ix=$2&fEmbed=$1
哪个设置“& fEmbed = embed /”,这真的不是我想要的。我想评估$ 1的内容,并输出不同的东西(即“1”)。
如何在将前两个RewriteRules组合成一个RewriteRule时如何处理这个问题?
答案 0 :(得分:1)
我认为这应该是两条规则,但它们不应该做同样的事情。以下是未经测试的,但希望意图很明确,如果它不能“开箱即用”:
RewriteRule ^(embed/)?something/(\d+)/start$ /index.php?ix=$2
RewriteRule ^embed/(.*) $1&fEmbed=1
我假设“/ start”始终位于URL的末尾。如果没有,那就更难了。
编辑:阅读Vegard的评论我想也许可以通过交换规则来处理:
RewriteRule ^embed/(.*) $1&fEmbed=1
RewriteRule ^something/(\d+)/start /index.php?ix=$1
但是,如果这样做有效,它依赖于真实世界的应用程序。
答案 1 :(得分:0)
使用PEZ的想法,这就是我提出的:
RewriteRule ^something/(\d+)/start(&fEmbed=1)? /index.php?ixQuiz=$1&fStart=1$2
RewriteRule ^embed/(.*) $1&fEmbed=1
不是很漂亮,但它确实有效。我现在可以有多个以“something /”开头的规则,并且所有这些规则都可以使用“embed /".
作为前缀。