【问题标题】:Need help for mod_rewrite rewriterule需要 mod_rewrite rewriterule 的帮助
【发布时间】:2014-06-23 17:53:46
【问题描述】:

这是我的 .htaccess

<IfModule mod_rewrite.c>    
RewriteEngine On
RewriteRule ^\.htaccess$ - [F]
#RewriteBase /
RewriteRule ^(\w+)$ index.php?main=$0
</IfModule>

它适用于像http://www.test.de/Contact 这样的超链接,但我想添加更多参数,例如:

http://www.test.de/Categorie/A/1        index.php?main=$0&sub1=$1&sub2=$2

有人可以帮我定义 RewriteRule 吗? 谢谢!

【问题讨论】:

标签: php apache .htaccess mod-rewrite


【解决方案1】:
<IfModule mod_rewrite.c>    
RewriteEngine On
RewriteRule ^\.htaccess$ - [F]
#RewriteBase /
RewriteRule ^(\w+)$ index.php?main=$1
RewriteRule ^(\w+)/(\w+)$ index.php?main=$1&sub1=$2
RewriteRule ^(\w+)/(\w+)/(\w+)$ index.php?main=$1&sub1=$2&sub2=$3
</IfModule>

试试这个。重写规则的问题在于它只匹配单词字符(组成单词的字符)。它在第一个 / 处终止。另外,你最后有一个 $ ,这不是绝对必要的。

【讨论】:

  • 感谢您只需编辑 $-Variables:&lt;IfModule mod_rewrite.c&gt; RewriteEngine On RewriteRule ^\.htaccess$ - [F] #RewriteBase / RewriteRule ^(\w+)$ index.php?main=$1 RewriteRule ^(\w+)/(\w+)$ index.php?main=$1&amp;sub1=$2 RewriteRule ^(\w+)/(\w+)/(\w+)$ index.php?main=$1&amp;sub1=$2&amp;sub2=$3 &lt;/IfModule&gt;
  • 没有捕捉到模式引用,它们确实从 1 开始,0 通常是指整个匹配。