【问题标题】:Q: htaccess rewrite rule问:htaccess 重写规则
【发布时间】:2015-07-30 14:00:22
【问题描述】:

目前我的 .htaccess 中有这个

# Enable Rewriting
RewriteEngine on

# Rewrite user URLs
RewriteRule ^index/^([0-9a-zA-Z-]+)$ index.php?index=$1
RewriteRule ^([0-9a-zA-Z-]+)$ index.php?index=$1

在我的浏览器中,当我这样访问时:

http://domain.com/aboutus

它按预期工作。我想做的是,如果我有这样的东西怎么办:

http://domain.com/category/sports

我应该在我的 .htaccess 中添加什么,以便它可以读取主类别和子类别的 URL 格式?

【问题讨论】:

  • 我认为您提供的信息不足。您的类别/子类别是动态的吗?是否有子类别的查询字符串?
  • 很抱歉信息不足。是的,主要类别和子类别将是动态的 @PanamaJack 。子类别中没有查询字符串

标签: apache .htaccess mod-rewrite


【解决方案1】:

您在正则表达式中遗漏了正斜杠。

RewriteRule ^index/([0-9a-zA-Z-\/]+)$ index.php?index=$1 [L]
RewriteRule ^([0-9a-zA-Z-\/]+)$ index.php?index=$1 [L]

更好的是,将规则合二为一:

RewriteRule ^(index/)?([0-9a-zA-Z-\/]+)$ index.php?index=$2 [L]

还添加了[L] 标志以在找到匹配项时停止重写。

【讨论】:

  • 我尝试使用你的方式,我认为规则是正确的。但是我如何从 URL 中读取信息?我使用 $_GET['index'] 来获取 URL。如果我有动态的主类别和子类别,则输出将是类别/子类别。我如何拆分以便从 URL 获得的数据对于编程目的更具可读性?
  • 如果您将请求 URI 传递给index,那么您需要使用 PHP 来解释请求。你可以从explode('/', $_GET['index']);开始。
  • 是的,我忘了说我能做到。我将值插入数组并将其分解以用于动态功能。谢谢!
猜你喜欢
  • 2014-07-17
  • 2014-01-23
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2011-11-03
相关资源
最近更新 更多