這一切都從一個時髦詞的角度聽起來很好,但對我來說,這是所有有點混亂,因爲我看到PHP的模型已經作爲MVC模型。它提供了API供您編程並將您的內容發送到您的Web服務器Apache和您的數據庫(如MySQL)。它將您的代碼(模型)轉換爲HTML(視圖)......只要您打算這麼做,並且您將代碼作爲用戶輸入(控件)提供。在術語中包含過多的內容會讓人分心,並且在您將不熟悉約定的合作伙伴引入其中時會導致混亂。 (這應該永遠不會用於付費演出的製作環境中。)
我可以告訴你,在你引用的頁面上,他們的人.htaccess
文件需要一些工作。 [L]
標誌告訴mod_rewrite這是規則返回true時處理的最後一個命令。所以,你要麼需要這樣做:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
或下面的......但他是使用passthru標誌,這意味着他在暗示有可能被之前的最後一個規則來處理其他事情(如。可能是rewrite_base
或alias
),但實際上並非如此,因爲它有點空洞,所以他的.htaccess
文件實際上並非如此。所以這段代碼和上面的代碼類似,但不完全一樣。他們不能一起使用,雖然和真的就沒有必要:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php?url=$1
</IfModule>
所不同的是在它的處理方式。在第一個.htaccess
示例中,您將任何文件傳遞給index.php,而不管它是否存在。你可以[不小心]重寫一個有真實文件的路徑,這樣就不會使用這種方法訪問真實文件。一個例子可能是你有一個名爲site.css
的文件,因爲它被重定向到index.php
而無法訪問。
在第二個規則集中,他至少要檢查服務器是否沒有被請求的名稱的文件或目錄,然後將它作爲$_GET
變量轉發到index.php
(這似乎有點毫無意義)。
我通常寫這些(因爲我知道mod_rewrite並已載入配置)的方法是這樣的:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mydomain.com
RewriteRule (.*) http://www.mydomain.com/$1 [R=301,L]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule .* index.php
在我的PHP代碼,我拉$_SERVER['REQUEST_URI']
和匹配它的URI列表來自數據庫。如果有一場比賽,那麼我知道這是一個真實的頁面(或者至少在某個時間點存在一條記錄)。如果沒有匹配,那麼我會爆發request_uri並使用FULLTEXT搜索在數據庫中強制執行,以查看網站上可能會匹配的內容。
注意:如果您盲目地信任request_uri並直接查詢數據庫而不清除它,則可能導致SQL注入風險。你不想成爲pwnd。
<?php
$intended_path = $_SERVER['REQUEST_URI'];
if(in_array($intended_path,$uris_from_database)){
//show the page.
} else {
$search_phrase = preg_replace('!/!',' ',$intended_path);
$search_phrase = mysqli_real_escape_string($search_phrase);
$sql = "SELECT * FROM pages WHERE MATCH (title,content) AGAINST ('$search_phrase');"
}
抱歉,如果這聽起來有點迂腐,但我有經驗,管理幾百萬美元(從零開始)網站建設有他們的障礙與人不堅持標準的約定(或至少同意團隊一致)。
我想你的答案在這裏? http://stackoverflow.com/questions/5280347/autoload-classes-from-different-folders – Steven 2013-05-04 08:10:03
@Steven感謝您的回覆。我訪問過鏈接,它回答瞭如何自動加載類,但我在這裏有一點不同的問題。 :) – 2013-05-04 08:17:41
我只是不明白爲什麼你將.access文件拖拽到這裏(我可能只是不明白你在做什麼)。你想要做的就是加載類,對吧?你「根文件夾」是你的index.php文件。 Index.php將從routes.php中加載數據。如果您訪問www.b.com/mvc/cars,它仍會加載index.php,但它知道URL是/ mvc/cars。 – Steven 2013-05-04 08:41:56