0

我真的很难做一个标题。所以如果你有更好的东西,请编辑它。

现在的问题:

我正在尝试在我的 .htaccess 文件中使用 mod_rewrite 重写一些 URL。

所以,我想做的是做两个相同的查询,这当然是行不通的。仅适用于其中一项规则。所以我在想是否有某种方法可以告诉如果第一条规则失败则转到下一条?或者 - 如果一个规则失败,继续寻找另一个?

这些是我的规则,除了最后一个参数外是相同的。

RewriteRule ^udforsk/([a-z-]+)/([0-9]+)$ index.php?page=udforsk&q=1&s=$1&val=$2
RewriteRule ^udforsk/([a-z-]+)/([0-9]+)$ index.php?page=udforsk&q=1&s=$1&p=$2
4

2 回答 2

1

Correct me if I'm wrong but, if you are passing the arguments in via GET, then index.php should handle the error that would happen if it were missing a GET variable.

In index.php, treat $_GET["p"] like you would treat $_GET["val"], actually, why not use isset() and set p equal to val (if p isn't already set)

于 2012-08-19T15:03:44.567 回答
0

重写不会检查您在规则中调用的页面是否实际有效。它只会尝试提供它,然后因为您没有 [L] 它也会尝试提供下一个。

您可能应该做的是更改您的第一个 URL 以将该 $2 值作为两个不同的参数传递

RewriteRule ^udforsk/([a-z-]+)/([0-9]+)$ index.php?page=udforsk&q=1&s=$1&val=$2
RewriteRule ^udforsk/([a-z-]+)/([0-9]+)$ index.php?page=udforsk&q=1&s=$1&p=$2

应该

RewriteRule ^udforsk/([a-z-]+)/([0-9]+)$ index.php?page=udforsk&q=1&s=$1&val=$2&p=$2

然后让您的 index.php 根据 php 脚本中的逻辑来选择使用“val”或“p”的参数。

确保在您的 php 代码中使用“isset”来测试变量。

$value = (isset($_REQUEST["val"]) ? $_REQUEST["val"] : (isset($_REQUEST["p"]) ? $_REQUEST["p"] : "error"));

$value 将保存 "val" 或 "p" 的内容或单词 "error" 如果两者都没有设置。

于 2012-08-19T15:19:00.113 回答