1

所以,我需要你的帮助,我正试图以这种方式重写 2 页

www.mydomain.com/page1.php?id=52

www.mydomain.com/52/

和另一个 page2.php 很像这个 www.mydomain.com/page2/id

我做了很多研究,我发现了这个规则

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ page1.php?id=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ users.php?id=$1

但是当我测试这个规则时,如果我在 url 中写它会很好,但是如果我从 url () 中删除 page2,www.mydomain.com/page2/id 我无法获得 id 变量 throw php ( ) 它给了我 page1$_GETwww.mydomain.com/id

那么,有可能这样做吗?

4

1 回答 1

0

那么,有可能这样做吗?

你的模式看起来完全一样,除了一个斜杠和另一个没有斜杠。

所以无论这个“id”是什么,^([a-zA-Z0-9_-]+)$如果它没有斜杠,它匹配第一条规则,但如果它有斜杠,它匹配第二条规则^([a-zA-Z0-9_-]+)/$。这意味着:

www.mydomain.com/52/

重写为:users.php?id=52, 和

www.mydomain.com/52

改写为:page1.php?id=52

现在,如果你想让它在有或没有斜杠的情况下都适用,这是不可能的。52 匹配之间没有区别。例如,如果您有此 URL:

www.mydomain.com/1234

那是为了page1.php?还是users.php?两种模式完全相同,因此第一条规则始终匹配,而第二条规则始终被忽略。

于 2013-10-23T02:22:50.013 回答