0

我在子目录下有一个 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/
  • 第二步:点击主页上的任何链接(默认yii应用)让说About Us页面
  • 第三步:http://localhost/~username/maindirectory/yiiapp/site/page?view=about
  • 第四步:点击链接上的任何一个(假设是同一页)
  • 网址看起来像:http://localhost/yiiapp/site/page?view=about

所以:所有链接都可以作为 : 访问 http://localhost/yiiapp/.... ,而不是从链接中删除 index.php,而删除了 while 字符串 b/wlocalhost和基本目录。

我已经尝试过,并且需要在 localhost 上使用相同类型的 url,显然没有使用子域

请帮我解决这个问题。

4

3 回答 3

0

部分答案:

问题是您正在重定向到同一域上的绝对 URL。
URL 可能看起来像/yiiapp/site/page?view=about. 然而,这导致http://localhost/yiiapp/site/page?view=about. 您必须预先添加与域相关的网站目录(不确定我是否正确表达)。

例如,a href标签中的 URL 应该看起来像/~username/maindirectory/yiiapp/site/page?view=about这样,因此您必须/~username/maindirectory从某处预先添加该部分。

于 2012-11-23T11:29:25.310 回答
0

你试过:

'urlManager'=>array(
    ....
    'baseUrl' => '/~username/maindirectory/yiiapp',
    ....

http://www.yiiframework.com/doc/api/1.1/CUrlManager#setBaseUrl-detail

于 2012-11-24T09:52:27.970 回答
0

所以 RewriteBase /~username/maindir/yiiapp,在 .htaccess 中解决了这个问题,而不是 'baseUrl' => '/~username/maindirectory/yiiapp'config/main.php 中的东西

这是完整的 .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>
于 2012-12-12T06:30:38.900 回答