繁体   English   中英

使用.htaccess和PHP清理子组的url

[英]clean url for subgroup using .htaccess & PHP

如何转换网址如下:

http:// localhost / series / dynamics / admin / cleanURL / value1?subgroup = value2

到更干净的网址,

例如: http:// localhost / series / dynamics / admin / cleanURL / value1 / value2

我正在使用$ _GET并可以选择使用$ _SERVER ['REQUEST_URI']。 php文件的名称是index.php。 我已经设法为第一个参数(即value1)实现了干净的url,但对于value2却无能为力

我的htaccess看起来像这样,很确定它需要传递第二个参数,但无法确定如何执行。

 Rewriteengine on
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 Rewriterule ^([a-zA-Z]+)$ index.php?group=$1

我试过了: ^([a-zA-Z]+)$ index.php?group=$1?subgroup=$2和其他几种方法,但是它们都不起作用

请查看下面的2个PHP代码,我不确定“&amp”是否可以完成除“?”以外的其他工作? 带我到另一个页面。

<li id="nav"<?php if($pageid==$nav['group']){echo'class="active"';}?>><a href="<?php echo $nav['group'];?>"><?php echo $nav['product']?></a></li>


<a href="?subgroup=<?php echo $list['subgroup']; ?>" <?php if($tst1 == $list['subgroup']){echo 'class="active"';} ?> ><?php echo $list['subgroup']."(".$list['contains'].")".'<br/>';?></a>

我可以使用“&”代替“?”吗? 在子组的链接中?

我遇到了一些问题。 每当需要添加另一个参数时,都需要在RewriteRule pattern添加另一个capture group ([a-zA-Z]+) ,否则它将不知道在URI中查找。 因此,在模式中不使用其他捕获组的情况下使用Backreference $2将为空,因为您只有一个。

此外,您的查询字符串格式无效。 您只使用? 一次,然后再使用&号( & )添加更多键/值对。

这样的事情可能就是您所追求的。 我做了一些更改,以防止多次写入条件。

 RewriteEngine on

 #if file or directory is real, do nothing
 RewriteCond %{REQUEST_FILENAME} -f [OR]
 RewriteCond %{REQUEST_FILENAME} -d
 RewriteRule ^ - [L]

 #rewrite group and subgroup e.g. http://.../value1/value2/
 Rewriterule ^([a-zA-Z]+)/([a-zA-Z]+)/?$ index.php?group=$1&subgroup=$2 [L]
 #rewrite group e.g. http://.../value1/
 Rewriterule ^([a-zA-Z]+)/?$ index.php?group=$1 [L]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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