0

我的 .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”)。

在将前两个 RewriteRule 组合成一个 RewriteRule 时如何解决这个问题的任何想法?

4

2 回答 2

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

但是,这仍然取决于实际应用程序是否可行。

于 2008-12-23T10:44:30.503 回答
0

使用 PEZ 的想法,这就是我想出的:

RewriteRule ^something/(\d+)/start(&fEmbed=1)?    /index.php?ixQuiz=$1&fStart=1$2
RewriteRule ^embed/(.*)                         $1&fEmbed=1

不是很漂亮,但它有效。我现在可以有多个以“something/”开头的规则,并且所有这些规则都可以使用“embed/”作为前缀。

于 2008-12-23T13:04:54.963 回答