如何转换网址如下:
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>
我可以使用“&amp;”代替 ”?”在子组的链接?
答案 0 :(得分:0)
我看到了一些问题。每当您需要添加其他参数时,您需要在capture group
中添加另一个([a-zA-Z]+)
RewriteRule pattern
,否则它将无法在URI中查找。因此,如果在模式中没有其他捕获组,则使用反向引用$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]