Zend Framework中的奇怪网址

时间:2011-03-20 22:31:53

标签: zend-framework

Zend项目创建如下URL: http://localhost/zftest/public/index/add

我如何拥有像这样的网址 http://localhost/zftest/add.php

感谢。

3 个答案:

答案 0 :(得分:2)

首先,你似乎是在摆脱了“公共”部分之后。有两种方法。

首先,.htaccess。在项目的根目录中,创建两个文件:index.php.htaccess,其中包含以下内容:

htaccess的:

RewriteEngine On
RewriteRule .* index.php

的index.php:

<?php 
define('RUNNING_FROM_ROOT', true);
include 'public/index.php';

你有它,URL中没有“公开”。

实现它的另一种方法是设置域名。您需要修改两个文件:hostshttpd-vhosts.conf。 hosts文件位于Linux下的/etc/hosts或Windows下的C:\Windows\System32\drivers\etc\hosts中。两者都需要根级访问权限。只需添加一行

即可
127.0.0.1 zftest.local

然后找到你的vhosts文件。我正在使用XAMPP,因此以下是XAMPP的路径:Windows下的C:\xampp\apache\conf\extra\httpd-vhosts.conf /opt/lampp/etc/extra/httpd-vhosts.conf。只需添加以下内容:

NameVirtualHost *:80
<VirtualHost *:80>
    DocumentRoot              /opt/lampp/htdocs/zftest/public
    ServerName                zftest.local
    ServerAlias               zftest.local
    SetEnv APPLICATION_ENV    development
    SetEnv APPLICATION_DOMAIN zftest.local
</VirtualHost>

现在,当你转到zftest.local(当然选择你想要的任何名字)时,你会看到你的头版,而不是网址中的“公开”部分。

至于问题的其他部分,您需要一个自定义路由器。设置路由器非常简单,您可以在互联网上找到大量信息。有些人喜欢在引导程序中执行此操作,但我认为最简单的方法是在application.ini文件中执行此操作。这是一个示例路由器:

resources.router.routes.getbyroute.type = "Zend_Controller_Router_Route_Regex"
resources.router.routes.getbyroute.route = "(.+)\.php"
resources.router.routes.getbyroute.defaults.controller = index
resources.router.routes.getbyroute.defaults.action = index
resources.router.routes.getbyroute.map.1 = action
resources.router.routes.getbyroute.reverse = "%s.php"

这应该照顾你的路线(理论上,我没有测试它的正确性,呵呵)。虽然调查路由器,因为你可能想要比这更通用的东西(这个不会处理除index之外的其他控制器。)

我希望这会有所帮助。

答案 1 :(得分:1)

我没有看到默认Zend路由的问题,因为这种URL映射样式被认为是一种很好的做法(SEO友好,从URL到模块,控制器和操作的清晰映射),但是如果你想改变路由你应该阅读Zend Controller Router Documentation。然后你的映射可能会看起来像这样:

<?php

$router = $frontController->getRouter();
$router->addRoute(
    'add',
    new Zend_Controller_Router_Route('add.php', array('controller' => 'index', 'action' => 'add'))
);

?>

答案 2 :(得分:0)

这通常是通过使用虚拟主机文档根目录来实现的,或者更常见的是通过放入.htacess文件来将所有请求重定向到/public/index.php。

有关详细信息,请参阅http://framework.zend.com/wiki/display/ZFDEV/Configuring+Your+URL+Rewriter