我在子目录下有一个yii网站,例如
http://localhost/~username/maindirectory/yiiapp/
我的htaccess文件:
DirectoryIndex index.php index.html index.htm
Options +FollowSymLinks
IndexIgnore */*
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /yiiapp
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
</IfModule>
保护/配置/ main.php
...
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
....
问题:
让我说访问:
http://localhost/~username/maindirectory/yiiapp/
About Us
页面http://localhost/~username/maindirectory/yiiapp/site/page?view=about
http://localhost/yiiapp/site/page?view=about
所以:所有链接都可以访问:http://localhost/yiiapp/....
,而不是从链接中删除index.php,而字符串b / w localhost
和基目录被删除。
我已经尝试this并且需要在localhost上使用相同类型的网址,显然不使用子网域
请帮我解决这个问题。
答案 0 :(得分:0)
部分答案:
问题是您要重定向到同一域上的绝对URL
该URL可能看起来像/yiiapp/site/page?view=about
。然而,这会导致http://localhost/yiiapp/site/page?view=about
。您必须在相对于域的前面添加网站目录(不确定我是否正确表达)。
例如,a href
标记中的网址应该与/~username/maindirectory/yiiapp/site/page?view=about
类似,因此您必须在某处添加/~username/maindirectory
部分。
答案 1 :(得分:0)
尝试过:
'urlManager'=>array(
....
'baseUrl' => '/~username/maindirectory/yiiapp',
....
http://www.yiiframework.com/doc/api/1.1/CUrlManager#setBaseUrl-detail
答案 2 :(得分:0)
所以.htaccess中的RewriteBase /~username/maindir/yiiapp
修复了问题,而不是
config / main.php中的'baseUrl' => '/~username/maindirectory/yiiapp'
事物
这是完整的.htaccess文件:
DirectoryIndex index.php index.html index.htm
Options +FollowSymLinks
IndexIgnore */*
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /~username/maindir/yiiapp
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
</IfModule>