我正在使用 ZF2(Zend Framework 2,v2.2),我希望http://www.foo.com/path/to/app/重定向到公用文件夹。
我尝试了很多解决方案,但没有一个允许 url 指向 /path/to/app/public/index.php,而只显示 /path/to/app/。
我将不胜感激任何解决方案,因为我无法按照应用程序框架 README 文件中的描述创建虚拟主机。
非常感谢任何帮助。
干杯,格雷格。
我正在使用 ZF2(Zend Framework 2,v2.2),我希望http://www.foo.com/path/to/app/重定向到公用文件夹。
我尝试了很多解决方案,但没有一个允许 url 指向 /path/to/app/public/index.php,而只显示 /path/to/app/。
我将不胜感激任何解决方案,因为我无法按照应用程序框架 README 文件中的描述创建虚拟主机。
非常感谢任何帮助。
干杯,格雷格。
我想出了一个解决方案: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 访问应用程序。
希望能帮助到你。
设置一个虚拟主机不是更容易吗?
DocumentRoot "actual/path/to/application"
ServerName appname
这意味着当你输入
http://yourdomain.com/appname it will resolve to http://root/actual/path/to/application
也许我没有正确理解这个问题 - 但我会使用 VirtualHost 而不是复杂的 Mod_Rewrite 规则。
如果您使用带有 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]