3

我正在使用 ZF2(Zend Framework 2,v2.2),我希望http://www.foo.com/path/to/app/重定向到公用文件夹。

我尝试了很多解决方案,但没有一个允许 url 指向 /path/to/app/public/index.php,而只显示 /path/to/app/。

我将不胜感激任何解决方案,因为我无法按照应用程序框架 README 文件中的描述创建虚拟主机。

非常感谢任何帮助。

干杯,格雷格。

4

3 回答 3

5

我想出了一个解决方案:https ://github.com/gpfister/ZendSkeletonApplication

简而言之,我在应用程序的根目录添加了一个 .htaccess 文件:

RewriteEngine On

# If URL to the application is http://foo.com/path/to/ZendSkeletonApplication/
# the set the base to /path/to/ZendSkeletonApplication/
RewriteBase /path/to/ZendSkeletonApplication/

RewriteRule ^\.htaccess$ - [F]
RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ public/$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ public/index.php [NC,L]

然后我更改了模块/应用程序/config/module.config.php。

它现在工作正常,虽然http://foo.com/path/to/ZendSkeletonApplication/public会失败,这很好,因为我不打算使用这个 URL 访问应用程序。

希望能帮助到你。

于 2013-05-22T19:26:45.087 回答
0

设置一个虚拟主机不是更容易吗?

DocumentRoot "actual/path/to/application"
ServerName appname

这意味着当你输入

http://yourdomain.com/appname it will resolve to http://root/actual/path/to/application

也许我没有正确理解这个问题 - 但我会使用 VirtualHost 而不是复杂的 Mod_Rewrite 规则。

于 2013-11-22T22:13:00.100 回答
0

如果您使用带有 mod rewrite 的 apache 将其粘贴在您的公共文件夹(/path/to/app)上方的 htaccess 中

RewriteEngine On
RewriteBase /public/
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
于 2013-05-21T15:10:51.523 回答