【问题标题】:clean url for subgroup using .htaccess & PHP使用 .htaccess 和 PHP 为子组清理 url
【发布时间】:2016-05-10 04:52:58
【问题描述】:

如何转换如下网址:

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

到更简洁的 URL,

例如: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>

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

【问题讨论】:

  • 你把这个 .htaccess 文件放在哪里?
  • 您的规则只匹配所有内容并将其附加为另一个查询参数。如果你想去掉subgroup=value2,那么你应该明确地搜索它。
  • @MarcB 问题在于它们彼此相关,因此......

标签: php apache .htaccess


【解决方案1】:

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

您的查询字符串格式也无效。您只需在开头使用一次?,然后使用与号 (&amp;) 来添加更多键/值对。

这样的东西可能就是你所追求的。我对其进行了一些更改以防止多次写入条件。

 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]

【讨论】:

  • 请看一下上面的 2 个 PHP 代码,我不确定 & 是否能完成这项工作?带我到另一个页面。另外,当我为子组定义了这样的值时,如何处理空格和“-”。
猜你喜欢
  • 2014-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-08
相关资源
最近更新 更多