使用.htaccess进行URL重写问题

时间:2009-12-31 19:36:11

标签: .htaccess mod-rewrite

我正在尝试编写如下的URL,但是当我尝试调用seo queryparam时,它总是返回index.php。知道为什么它没有为'seo'返回正确的值吗?

RewriteRule ^([^/]*)$ index.php?c=home&m=details&seo=$1 [L]

它应该转发的网址是这样的:http://domain.com/The-Name-of-the-Product。该网址应改写为http://domain.com/index.php?c=home&m=details&seo=The-Name-of-the-Product,但最终会改为http://domain.com/index.php?c=home&m=details&seo=index.php

1 个答案:

答案 0 :(得分:3)

各种事件导致URL返回重写过程。您可以使用RewriteCond来阻止此操作:

RewriteCond $1 !^index.php$
RewriteRule ^/?([^/]+)$ index.php?c=home&m=details&seo=$1 [L,NS]

来自mod_rewrite technical details

  

当您在每个目录上下文中操作URL /文件名时,mod_rewrite首先将文件名重写回其相应的URL(这通常是不可能的,但请参阅下面的RewriteBase指令以获得实现此目的的技巧),然后启动新的内部使用新网址的子请求。这将重新开始处理API阶段。

这一直吸引着人们。