1

我正在尝试编写我的 .htaccess 来支持两个虚 url,代码会说明一切,因为我对 .htaccess 不是很好。

 RewriteRule ^([a-zA-Z0-9-]+)/?$ index.php?p=$1&s=$2 [L,QSA]

在去例如http://website.com/home/test

我得到一个 404,但如果我只访问 website.com/home,$_GET["p"] 仍然会返回家中。

为什么在 url 中添加第二个变量时会出现 404?

4

1 回答 1

2

你得到一个 404 因为/home/test与表达式不匹配^[a-zA-Z0-9]+/?$。第一组之后的第二组/存在于您的$字符串终止符之外。您需要添加第二个()组,这是可选的。我已经替换了与下一个斜杠匹配的a-zA-Z0-9字符类。[^/]+

表示包含第(?:)一个的非捕获组/,其中包含一个捕获组()以检索$2组件。整个构造?在最终$终止符之前是可选的。

RewriteEngine On
RewriteRule ^([^/]+)(?:/([^/]+)/?)?$ index.php?p=$1&s=$2 [L,QSA]
于 2013-05-15T02:51:41.173 回答