【发布时间】:2014-04-12 01:03:48
【问题描述】:
学习 PHP,我正在玩 mod_rewrite 和 CodeIgniter。我已经正确配置了我的 .htaccess 文件
RewriteEngine On
RewriteRule ^(resources)/(.*) $1/$2 [L]
RewriteRule ^(user_guide)/(.*) $1/$2 [L]
RewriteRule (.*) index.php?$1 [L]
我了解一点正则表达式,并且可以理解这里发生的事情。应用重写规则,然后服务器处理最终 URL,在上述情况下,将 index.php(前端控制器)附加到“漂亮”URL。到目前为止,一切都很好。
我现在想要一个 URL 模式:
/<person-name>/at/<place>
翻译成:
/index.php/person/list?personName=$1&place=$2
我在人员控制器的列表函数中处理请求。我不明白为什么以下不起作用:
RewriteRule ^([a-z]+)/(at)/([a-z]+)$ index.php/person/list?personName=$1&place=$2 [L]
我做错了什么/我的理解有什么缺陷?我看到占位符被正确提取($1 和 $3),但是,它抛出了 CodeIgniter 404。
非常感谢!
【问题讨论】:
-
你不能在
routes.php -$route['([az]+)/at/([az]+)'] = "person/list/$1/$2"; -
是的,当我了解 routes.php 时,我最终做到了。 :-) 我正在寻找为什么我不能在 .htaccess 文件中这样做的答案。 :-) 顺便说一句,为什么我们不能通过 GET 参数访问那些 $1 和 $2 ?这行得通吗?
-
在您的
config.php中是否都设置为true? -$config['allow_get_array'] = TRUE; $config['enable_query_strings'] = TRUE; -
enable_query_strings 不是,但我只是将其设为 TRUE 并检查。同样的故事。
标签: php regex .htaccess codeigniter mod-rewrite