编辑(解决方案): 最后,问题不在于 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)。
几天来,我一直在尝试解决类似问题的其他解决方案(例如更改应用程序的基本路径,向其中添加“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。我错过了什么吗?
谢谢。