[英]Creating dynamic URLs in htaccess
我正在嘗試編寫一個 .htaccess 文件,這將使我的 URL 對搜索引擎更具吸引力。 我基本上知道如何做到這一點,但我想知道如何動態地做到這一點。
我的 URL 通常看起來像:
view.php?mode=prod&id=1234
我想做的是從 url 中獲取 id,進行數據庫查詢,然后將從數據庫返回的標題放入 url。 就像是:
/products/This-is-the-product-title
我知道有些人已經通過 phpbb 論壇 URL 和主題完成了這項工作,並且我試圖將代碼跟蹤到它用新的標題字符串 URL 替換實際 URL 的位置,但沒有運氣。
我知道我可以只用 id 重寫 URL,例如:
RewriteRule ^view\.php?mode=prod&id=([0-9]+) /products/$1/
PHP 中有沒有辦法覆蓋顯示的 URL?
目前您想知道如何將丑陋的/products/product-title
(例如/view.php?mode=prod&id=1234
)轉換成漂亮的 ZE6B391A8D2C4D45902A23A8B65。 開始反過來看這個。
您想要的是有人鍵入/products/product-title
以實際將他們帶到/view.php?mode=prod&id=1234
可以訪問的頁面。
即您的規則可能如下:
RewriteRule ^products/([A-Za-z0-9-])/?$ /view.php?mode=prod&title=$1
然后在 view.php 中根據title
進行查找以找到id
。 然后照常進行。
一種方法,就像大多數 mvc 框架一樣。 您可以將所有頁面重定向到同一個 index.php 文件,並使用腳本來確定要加載的頁面。
.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
並且您的 php 文件將具有如下腳本:
// get the url
$uri = (isset($_SERVER['REQUEST_URI']))?$_SERVER['REQUEST_URI']: false;
$query = (isset($_SERVER['QUERY_STRING']))?$_SERVER['QUERY_STRING']: '';
$url = str_replace($query,'',$uri); // you can edit this part to do something with the query
$arr = explode('/',$url);
array_shift($arr);
// get the correct page to display
$controller =!empty($arr[0])?$arr[0]:'home'; // $arr[0] could be product/
$action = isset($arr[1]) && !empty($arr[1])?$arr[1]:'index'; // $arr[1] can be product-title
}
當然,您必須使用此代碼來塑造您的應用程序
我希望這有幫助
一種方法是 output a Location: header 強制重定向到所選的 URL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.