[英]HTACCESS | Adding a second rewrite rule?
我正在尝试编写我的.htaccess以支持两个虚荣网址,由于我对.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“]仍然返回家。
在网址中添加第二个变量时,为什么会得到404?
您得到404,因为/home/test
与表达式^[a-zA-Z0-9]+/?$
不匹配。 在第一个/
之后的第二个组超出$
字符串终止符。 您需要添加第二个()
组,这是可选的。 我用[^/]+
替换了a-zA-Z0-9
字符类, a-zA-Z0-9
匹配所有内容,直到下一个斜杠为止。
(?:)
表示一个非捕获组,它比较第一个/
,在其内部有一个捕获组()
来检索$2
组件。 整个构造使用?
在最后的$
终止符之前。
RewriteEngine On
RewriteRule ^([^/]+)(?:/([^/]+)/?)?$ index.php?p=$1&s=$2 [L,QSA]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.