我正在尝试编写如下的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
答案 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阶段。
这一直吸引着人们。