我使用Zend Framework 2和提供的.htaccess
进行网址重写,如下所示:
RewriteEngine On
# The following rule tells Apache that if the requested filename
# exists, simply serve it.
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
# The following rewrites all other queries to index.php. The
# condition ensures that if you are using Apache aliases to do
# mass virtual hosting, the base path will be prepended to
# allow proper resolution of the index.php file; it will work
# in non-aliased environments as well, providing a safe, one-size
# fits all solution.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]
此外,我的路线定义如下:/customers/8080/edit
。现在我需要根据/customers/edit/8080
访问此路由。附加URL应该是别名,而不是简单的重定向。
因为我的路由已经非常复杂,所以在module.config.php
中重写我的路由实际上是没有选择的。我认为实现这一目标的最简单方法是在我的.htaccess
中添加重写条件,并定义路由/customers/edit/8080
,只需映射到/customers/edit/8080
。
由于ZF将每个网址重定向到index.php
,因此我不得不定义我的别名路由。
任何建议都很棒(:
答案 0 :(得分:0)
我正在处理一个非常类似的问题,但是我继承了Zend的安装,所以我不知道"开箱即用的问题"安装看起来像。
我(有点)通过添加" baseURL"来解决我的问题。 application.ini
文件中的参数。在这里查看我的问题和解决方案,它可能有帮助。 Moving Zend Framework site to new host - "An error occurred Page not found"
注意:我对结果并不是100%满意。我还在努力,但我已经接近了。
答案 1 :(得分:0)
只需在RewriteRule
文件中添加文字.htaccess
即可解决此问题。这是我最初尝试使其工作的原因,但我并没有省略模式部分中的前导斜杠。
所以这就是我想出来的:
RewriteRule ^customers/([0-9]+)/base/edit/([0-9]+)/?$ /customers/$1/edit/base/$2 [NC,L,P]
考虑指定[P]
标记,如果不应更改网址,则将请求作为代理请求处理。