【发布时间】:2011-07-28 14:35:19
【问题描述】:
我需要更改显示的客户端 URL 的结构。我不太熟练使用 .htaccess 文件的正则表达式和编码。基本上,我的结构类似于:
http://www.example.com/catalog/index.php?cat=lt&sec=lt1-1&id=nmlt10.
我希望它在地址栏中显示为:
http://www.example.com/catalog/lt/lt1-1/nmlt10.
这是我想出来的,但没有效果:
RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)/([^/]*)\$ /catalog/index.php?cat=$1&sec=$2&id=$3 [L]
我测试并删除了 .htaccess 文件中的任何其他规则,以确保没有任何内容被覆盖。我在共享托管 apache 服务器上,并且知道 mod_rewrite 已启用,因为我使用它将非 www 重写为 www url。我没有收到 500 条错误消息,我根本没有注意到任何变化。我不确定我在哪里出错了,所以希望有人能指出我正确的方向。
【问题讨论】:
-
1) 这个 .htaccess 文件在哪里——哪个文件夹? 2)在你的模式中删除
$之前的反斜杠。 -
.htaccess 在根文件夹中...我删除了反斜杠,但现在出现 500 错误。
-
2) 检查 Apache 错误日志以获取确切的错误描述,因为
$是一个特殊字符,意思是“字符串结尾”。如果用反斜杠转义,那么它只是 $ 字符。 1)如果 .htaccess 在网站根文件夹中,则规则将不匹配 - 因为 URL 有 4 个段,而您的规则只有 3 个。
标签: .htaccess url mod-rewrite