[英].htaccess for site in sub-directory using Yii framework
我已经查看了几个子目录中网站的htaccess配置示例,并尝试了其中大部分没有100%成功。
我的设置是:
public_html/.htaccess
public_html/mysite
目录中 public_html/mysite/frontend/www/index.php
所有请求 网址的状态 :
www.mysite.com
工作正常[ok] www.mysite.com/controller/action
向我显示主页[错误] www.mysite.com/mysite/frontend/www/controller/action
工作正常[错误,上面的项目应该工作] 我的.htaccess目前看起来像这样:
AddHandler application/x-httpd-php53s .php .html
Options +SymLinksIfOwnerMatch
IndexIgnore */*
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^(www.)?mysite.com$
RewriteCond %{REQUEST_URI} !^/mysite/frontend/www
RewriteRule ^(.*)?$ /mysite/frontend/www/index.php [L]
我已经尝试了一切,但我不知道为什么www.mysite.com/controller/action不起作用:(
任何帮助将非常感激! 谢谢!
我发现这个类似问题的答案很有帮助。 以下是我的重写规则的结果:
#Forward all non-existent files/directories to Yii
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) subdir/index.php/$1 [QSA,L]
这将获取所有不存在的文件/文件夹,并将它们发送到yii脚本,并附加初始URL。 QSA附加可能存在于初始URL中的任何查询字符串。
你不需要编辑.htaccess。 您只需将Yii条目脚本(index.php)和默认的.htaccess从子目录移动到webroot(以便它们直接驻留在public_html下)。 将index.php和.htaccess移动到根目录后,所有Web请求将直接路由到index.php(而不是子目录),从而消除了url的/子目录部分。
移动文件后,您需要编辑index.php以更新对yii.php文件(在Yii框架目录下)以及Yii配置文件(main.php)的引用。 最后,您需要将assets目录直接移动到webroot,因为默认情况下,Yii希望assets目录与入口脚本位于同一位置。
这应该是您需要做的所有事情,但如果您需要更多细节,我会在这里完整地描述这种方法:
我也没有更新.htaccess
文件,更容易修改子域的httpd.conf
虚拟主机,并将DocumentRoot
更改为指向yii文件夹。
您没有提及是否为Yii的Url Manager配置了干净的URL。 你需要,否则Yii希望“路线”显示为名为“r”的GET参数。 如果您没有,请参阅权威指南的此部分
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.