2012-11-23 55 views
0

我有一個警予網站子目錄如在這個.htaccess和Yii urlManager設置有什麼問題?

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, 
.... 

問題:

讓的說我accesss:

  • 步驟一: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已經和需要相同類型的URL的本地主機上,顯然不使用子域名

請幫我解決這個問題。

回答

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> 
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部分。

+0

你是對的,但問題是,URL都是使用Yii框架createurl功能或使用菜單類如產生'這個 - $>插件(「zii.widgets.CMenu」,陣列( \t \t \t '項'=>數組( \t \t \t \t陣列( '標籤'=> '首頁', 'URL'=>數組( '/站點/索引')),' – sakhunzai