簡體   English   中英

使用.htaccess將post.php?post_id = 20重寫為/ post / this-is-the-title /

[英]Use .htaccess to rewrite post.php?post_id=20 to /post/this-is-the-title/

我是.htacces的新手,多年來我一直試圖從以下位置獲取我的域名:

www.domain.com/post.php?post_id=20

這樣的事情:

www.domain.com/post/this-is-the-title/

正如我所說的,我對.htaccess還是陌生的,但是請有任何幫助! 注意:我將以某種方式從SQL數據庫獲取博客文章的標題

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

我已經寫一個非常簡單的路由方法在這里 它僅適用於人們,但是您應該能夠基於此構建數據庫驅動的路由器。

本質上,通過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"];

好的,到目前為止很好。 現在,假設您的數據庫包含頁面內容以及頁面別名。 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"];

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

您無法使用.htaccess進行此操作,因為您需要“以某種方式從SQL數據庫獲取博客文章的標題”,請使用PHP進行重定向。 :)

暫無
暫無

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

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