簡體   English   中英

.htaccess使用Yii框架在子目錄中的站點

[英].htaccess for site in sub-directory using Yii framework

我已經查看了幾個子目錄中網站的htaccess配置示例,並嘗試了其中大部分沒有100%成功。

我的設置是:

  • 使用Yii框架
  • htaccess at 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目錄與入口腳本位於同一位置。

這應該是您需要做的所有事情,但如果您需要更多細節,我會在這里完整地描述這種方法:

http://muhammadatt.tumblr.com/post/83149364519/modifying-a-yii-application-to-run-from-a-subdirectory

我也沒有更新.htaccess文件,更容易修改子域的httpd.conf虛擬主機,並將DocumentRoot更改為指向yii文件夾。

您沒有提及是否為Yii的Url Manager配置了干凈的URL。 你需要,否則Yii希望“路線”顯示為名為“r”的GET參數。 如果您沒有,請參閱權威指南的此部分

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM