2013-04-25 21 views
4

我使用的URL管理器和/或Apache的mod_rewrite的或可能完全是另一回事目前有一個問題。的Yii ::發行使用Showscriptname =假和URL經理

隨着showScriptName設置爲false,導航到如domain.com/login,domain.com/logout,domain.com/site/login地址都表現了同樣的方式。它只是顯示主要網站/索引,就好像我要導航到domain.com/eeofjew9j8jfdedfmewf(jibberish)。

也許這是我的Yii設置的問題?下面是那些(遺憾的草率):

'components'=>array(
    'urlManager'=>array(
     'urlFormat'=>'path', 
     'showScriptName'=>false, 
     'rules'=>array(
      '<controller:\w+>/<id:\d+>'=>'<controller>/view', 
      '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', 
      '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', 
      'login'=>'site/login', 
      'logout'=>'site/logout', 
      'register'=>'users/register' 
    ), 
    ,... 

這裏是我有我的WWW根的.htaccess設置:

RewriteEngine on 

# 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 

我使用的是VPS服務器,所以我有root權限對apache進行任何必要的更改。我檢查過我的phpinfo,mod_rewrite正在運行並啓用。在我的Apache配置,我有我的www目錄:

AllowOverride All 
Options Indexes FollowSymLinks MultiViews 
Order allow,deny 
Allow from all 

我經歷過,所以我假定3臺不同的主機(GoDaddy的,Dreamhost的,和lithiumhosting)抓我的頭在這個問題上它是​​一個問題上我以此結束。現在我有一個VPS,但我希望我終於可以解決我的問題並解決它。

+0

我不知道yii,但我已經實現了這樣的事情。如果我已經做到了,我會有規則鍵和值切換.... – adiktofsugar 2013-04-26 04:09:52

回答

2

首先驗證服務器解析.htaccess文件。這是簡單地通過將隨機文本在.htaccess文件如

CREATE AN ERROR 

如果給你一個服務器錯誤,則該文件被解析完成。您可能必須將.htaccess文件移動到目錄才能使其工作。

在此之後正在檢查,以確保在Apache的重寫模塊上。首先檢查phpinfo並查找正在運行的模塊。如果不是,您可能需要刪除模塊前面的註釋(#)字符。

後的模塊中的phpinfo顯示出來,然後看看你是否可以做一個基本的重寫,以確保不會有與Apache的問題。

RewriteEngine on 
RewriteRule^http://google.com/? [L,R] 

如果不工作嘗試添加

Options +SymLinksIfOwnerMatch 

到文件

一旦你的Apache做它的一部分,現在它是由警予。此代碼:

RewriteEngine On 
RewriteBase /mybasedirectory 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA] 

增加了,如果你沒有在文檔根目錄下的文件,如htdocs目錄

最後,如果不解決這個問題,那麼限制您的規則可能需要重寫的基本選項一個簡單的規則,如

 'contact'=>'site/contact', 

並看看是否至少重定向到你認爲應該的地方。當然,您可能需要再次檢查.htaccess的基本規則,以確保允許覆蓋,並且子目錄中沒有錯誤的.htaccess。我希望有所幫助。我終於得到了我的工作。

+0

接受這個作爲你自己的答案是最徹底的,儘管對於記錄來說,我後來從這個項目轉到了這個項目,並且沒有現場設置來測試這個解決方案。 – 2013-09-13 02:27:01

+0

得知運氣有什麼建議? – 2014-01-15 18:20:04

1

如果刪除這些行會發生什麼!

enter code here 
    # otherwise forward it to index.php 
    RewriteRule . index.php 
+0

仍然是同樣的問題。我進入了一個不同的項目,卻沒有真正在Yii工作。有點令人沮喪,但我會告訴你,如果我在下一次工作另一個Yii項目時遇到同樣的問題。 – 2013-07-10 03:26:36

1

如果添加此代碼,看看它是否工作

'<action:(login|logout|register|contact)>' => 'site/<action>',