EDIT(一个解决方案(:最后,问题不在于 yii 配置或虚拟服务器,而在于主服务器。我联系了服务器管理员,通过更改主服务器(托管 mi 虚拟服务器的位置(将请求重定向到的 URL 以附加包含虚拟文件夹名称的字符串,解决了这个问题。
我不确定这是否是最好的解决方案,但这是一个解决方案。因此,如果您遇到类似的问题,您可能需要联系您的服务器管理员。
以下是原始问题的详细信息以及我尝试过的一些选项,仅供参考:
我已经开发了一个 Yii 应用程序几个星期,它在我的本地服务器上运行良好,但是在部署应用程序时,我在使 URL 正常工作时遇到了一些麻烦。
在服务器中,我有一个类似于这样的结构:
/www/MyApp/(index.php, protected folder, etc)
/www/yii (the framework is located here)
我可以使用这样的 URL 访问我的网站:
www.somedomain.ac/VirtualFolder/MyApp
我的问题是 yii 生成的所有链接都指向(例如(:
www.somedomain.ac/MyApp/index.php?r=controller/index
而不是
www.somedomain.ac/VirtualFolder/MyApp/index.php?r=controller/index
我尝试在配置中修改 urlManager 部分,并出于某种原因添加了以下规则:
'../../VirtualFolder/MyApp/index.php/'.'<controller:'w+>/<action:'w+>/<id:'d+>'=>'<controller>/<action>',
'../../VirtualFolder/MyApp/index.php/'.'<controller:'w+>/<action:'w+>'=>'<controller>/<action>',
使用完整的 URL 使一些构建的 URL 指向正确的操作,但其他 URL 仍然不起作用(所有将表单发送到服务器的 URL(。
几天来,我一直在尝试其他类似问题的解决方案(例如更改应用程序的基本路径,向其添加"VirtualFolder"(,但它们似乎不起作用。
有关如何解决问题的建议将不胜感激。
谢谢。
====
================================================编辑:我正在尝试使用这样的.htaccess文件来做到这一点:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} somedomain.ac$ [NC]
RewriteCond %{HTTP_HOST} !VirtualFolder
RewriteRule ^(.*)$ http://somedomain.ac/VirtualFolder/$1 [R=301,L]
我将其复制到我的网络根目录,但尚未工作。还尝试将其复制到MyApp/protected文件夹并直接复制到MyApp中。我错过了什么吗?
谢谢。
你应该尝试将RewriteBase指令添加到.htaccess文件中
(问题是如何解决的(:最后,问题不在于 yii 配置或虚拟服务器,而在于主服务器。我联系了服务器管理员,通过更改主服务器(我的虚拟服务器托管到的位置(将请求重定向到的 URL 以包含包含虚拟文件夹名称的字符串,解决了该问题。
因此,如果您遇到类似的问题,您可能需要联系您的服务器管理员。