繁体   English   中英

HTACCESS | 添加第二个重写规则?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM