我有一個社交網絡,允許用戶寫博客和提問。我想創建動態URL,通過PHP在URL末尾發佈博客或問題的標題。如何創建動態網址?
例子:
www.blah.com/the_title_here
尋找最乾淨最有效的方式做到這一點。
我有一個社交網絡,允許用戶寫博客和提問。我想創建動態URL,通過PHP在URL末尾發佈博客或問題的標題。如何創建動態網址?
例子:
www.blah.com/the_title_here
尋找最乾淨最有效的方式做到這一點。
你通常會存儲URL友好「SLU g「的數據庫行,然後有一個PHP腳本來查找與該slug匹配的帖子。
舉例來說,如果你有一個名爲index.php
是拿了一個名爲slug
參數腳本...
<?php
if (isset($_GET['slug'])) {
$sql = "SELECT * FROM `your_table` WHERE slug = ? LIMIT 1";
$smt = $pdo->prepare($sql);
$smt->execute(array($_GET['slug']));
$row = $smt->fetchObject();
// do something with the matching record here...
}
else {
// display home page
}
...你可以使用的.htaccess然後重新寫請求:
RewriteEngine on
RewriteRule ^(.+)$ index.php?slug=$1
"www.blah.com/$id/".preg_replace('/^[a-z-]+/','',preg_replace('/[ ,;.]+/','-',strtolower($title)))
,並且只使用$id
從標題
"How do I create dynamic URLs?"
它創建網址
www.blah.com/15/how-do-i-create-dynamic-urls
有很多開源軟件可以做到這一點,你可以看看WordPress.org或MediaWiki.org來做到這一點。您需要組合.htaccess
或Apache配置設置才能將mod_rewrite
規則添加到它們。
接下來,您將需要一個控制器文件,正如Martin Bean寫的,以查找帖子...但確保您正確地轉義/清理/驗證輸入,否則如果您擁有SQL注入或XSS您的網站上的JavaScript。
所以最好使用id方法,並且只使用slug來實現漂亮的url目的。 WordPress.org軟件也表明,只有通過slu going纔會讓你的帖子變慢。所以,你可以使用一個組合的www.blah.com/slug-phrase-goes-before-the-numeric_id
譜寫正則表達式匹配:.*(\d+)$
使用數據庫做這將是傷心 :( 可能有很多情況下,你並不需要查找數據庫,你會用這種方法如: - 。如圖馬丁讓你的路徑或蛞蝓www.blah.com/signup
(在這裏沒有點)和DB連接吞噬了資源,嚴重的資源...
RewriteEngine on
RewriteRule ^(.+)$ index.php?slug=$1
大多數框架使用文件系統實現更清晰的網址。 一個文件夾來保存所有文件和 東西是在理論上
<?php
$default = "home";
//function to make sure the slug is clean i.e. doesnot contain ../ or something
if(isset($_GET['slug'])) $slug = clean($_GET['slug']);
if(!isset($slug)) $slug = $default;
$files = explode('/',$slug);// or any other function according to your choice
$file = "./commands/".$files[0].".php";
if(file_exists($file))
require_once($file);
else
require_once("./commands/".$default.".php");
類似,您可以讓這個一樣簡單,只要你想的那麼複雜。您甚至可以使用數據庫來確定默認情況下,像什麼馬丁一樣,但應該是在$default
,而不是你使用的第一個邏輯......做這種方式
優勢比查詢數據庫快得多
site.com/users/piyushmishra
和site.com/forums/mykickassforum
甚至在更深的層次一樣site.com/category/category-name/post-name/comments/page-3
./ACLcommands/users.php
,./XMLRPC/ping.php
似乎很抽象?這是幹什麼的?標題爲「 –
」如何創建動態網址?創建網址:www.blah.com/15/how-do-i-create-dynamic-urls –