.htaccess Zend Framework 2重写URL

.htaccess Zend Framework 2重写URL,.htaccess,zend-framework,zend-framework2,.htaccess,Zend Framework,Zend Framework2,我有一个Zend Framework 2应用程序,我希望使用.htaccess重写一些URL。 .htaccess文件位于我的公用文件夹中。 我已经验证了一个简单的重写规则,它将所有testurl重写为test.php RewriteRule ^testurl/?$ test.php [NC] test.php文件也位于公用文件夹中。 我将此规则置于Zend规则之上,以将所有URL映射到.htaccess中的index.php 我的问题是,我如何重写它,即索引模块中的SearchControl

我有一个Zend Framework 2应用程序,我希望使用.htaccess重写一些URL。 .htaccess文件位于我的公用文件夹中。 我已经验证了一个简单的重写规则,它将所有testurl重写为test.php

RewriteRule ^testurl/?$ test.php [NC]
test.php文件也位于公用文件夹中。 我将此规则置于Zend规则之上,以将所有URL映射到.htaccess中的index.php

我的问题是,我如何重写它,即索引模块中的SearchController? 我用不同的标志尝试了各种重写规则,例如

RewriteRule ^testurl/?$ /index/search [NC]
and
RewriteRule ^testurl/?$ index/search [NC]
但我总是得到404错误 路由无法匹配请求的URL。

我希望使用.htaccess的原因是,我将在重写规则中使用正则表达式来捕获几个不同的URL

非常感谢

您想要:

RewriteRule ^testurl/?$ /index/search [NC,L,R]

或者您需要在zend中为
testurl
添加一个路由,并将其路由到SearchController。

非常感谢。这很有效。我试过旗子[NC,L],但没有;我认为L是个问题,因为URL需要符合Zend重写规则,这些规则在我的.htaccess中低于此规则。为什么R(我理解为指向URL的临时重定向)能起作用?又一次thanks@user12345没有
R
,它会在内部重写URI。这通常意味着在
/index/search
上必须有一个物理资源,但这里有一个Zend路由,需要通过Zend的路由系统才能正确解释。内部重写通常不会减少它,因此需要外部重定向。或者,您可以创建一个新路由,或者使用
P
标志,该标志反向代理请求,并且不会更改浏览器地址栏中的URL(仅在加载mod_proxy的情况下工作)啊,我明白了。我认为P标志就是我想要的;我正在寻找,因为我希望URL保持不变。非常感谢