![](/img/trans.png)
[英]why $post_id appears to have no value in functions.php but I can use it for get_the_title($post_id)?
[英]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.