Php 正在更改$服务器[';请求#URI';]
我试图在我的Php 正在更改$服务器[';请求#URI';],php,.htaccess,zend-framework,mod-rewrite,Php,.htaccess,Zend Framework,Mod Rewrite,我试图在我的.htaccess中构建一个重写规则,以获得一个更漂亮的URL,用于使用Zend Framework显示线程论坛。 目标URL为: /forum/display/thread/i/1 我想要的是: /forum/display/thread/1 由于Zend Framework从URL构建GET变量(在本例中,从/thread/之后开始),因此我的原始URL为我提供了一个GET变量'i'=1,而第二个URL根本不提供GET变量 我想要的,要么是一种方法,将/1放入一个get变量,
.htaccess
中构建一个重写规则,以获得一个更漂亮的URL,用于使用Zend Framework显示线程论坛。
目标URL为:
/forum/display/thread/i/1
我想要的是:
/forum/display/thread/1
由于Zend Framework从URL构建GET变量(在本例中,从/thread/
之后开始),因此我的原始URL为我提供了一个GET变量'i'=1
,而第二个URL根本不提供GET变量
我想要的,要么是一种方法,将/1
放入一个get变量,可能会有更多的变量(例如,页码/p/2
),要么是一种使用mod_rewrite
重写URL的方法,以便$\u服务器['REQUEST\u URI']
设置为/forum/display/thread/I/code>
有人知道怎么做吗?在引导程序中:
protected function _initRouter()
{
$route = new Zend_Controller_Router_Route_Regex(
'/forum/display/thread/(.+?)',
array('controller' => 'forum', 'action' => 'display'),
array(1 => 'thread'),
'/forum/display/thread/%d'
);
$front->getRouter()->addRoute('routeName', $route);
}
代码未测试,如果出现错误,请发布错误:)我需要修改您的答案以进行测试。现在是:private static function\u setupRouter(Zend\u Controller\u Front$fc){$route=new Zend\u Controller\u Router\u route\u Regex('forum/display/t/(.+?)),array('module'=>'forum','Controller'=>'display','action'=>'thread'),array('i'=>1));$fc->getRouter->addRoute('routeName'$route);}
现在我遇到了以下错误:无法汇编。没有指定反向路由。#0/library/Zend/Controller/Router/Rewrite.php(470):Zend_Controller_Router_route_Regex->assemble(Array,false,true)#1/library/ViewRenderer.php(131):Zend_Controller_Router_Rewrite->assemble(Array)
sry用于错误的格式设置。我无法让它在propper块中显示代码