2012-09-24 29 views

回答

4

如果頁面標題是數據庫驅動的(或者動態的),我看不到如何避免使用.htaccess重寫。在PHP腳本中使用路由會更有意義。

我寫了一個非常簡單的路由方法here。這只是爲了讓人們瞭解這個主題,但是你應該能夠建立一個基於數據庫的路由器。

本質上,通過index.php路由所有的流量,然後獲取請求URI並決定要加載的資源。

[編輯]

讓我解釋一下,利用我的博客文章的信息。

假設您已經建立並運行了您的站點,請首先將流量引導至index.php。你這樣做在.htaccess,它可以這樣做:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

然後,在index.php文件(或在這與所謂的index.php腳本),你可以得到請求URI:

$uri = $_SERVER["REQUEST_URI"]; 

好的,到目前爲止好。現在讓我們假設你的數據庫保存頁面內容以及頁面別名。開放的我們將最有可能是頁面的別名,因此,所有你需要做的是這樣的:

$pdo = new PDO(/* your db connection params */); 
$page = $pdo 
    ->query("SELECT * FROM pages WHERE alias = :alias", 
    array("alias" => $uri) 
    ) 
    ->fetch(); 

此時你應該有與目標(或別名),在URI字符串的頁面內容。所有你現在需要做的是顯示你想要的任何方式:

echo $page["content"]; 
+0

我知道這是舊的,但我只是有時間來嘗試它,在index.php我會把'$ uri = $ _SERVER [「REQUEST_URI」];'?到處都是我寫的,它只是文本而不是代碼 – Robdogga55

+0

爲了讓您的代碼被評估爲PHP,它必須位於PHP標籤內:'' – mingos

0

您不能。您必須將標題放在查詢字符串中。 .htaccess無法安全地從數據庫中獲取任何內容。 由於您要重寫url,爲什麼不簡單地在URI中寫入帖子標題?

0

因爲你需要得到「您的博客文章,從一個SQL數據庫莫名其妙的標題」你不能使用.htaccess做到這一點,使用PHP重定向。 :)