簡體   English   中英

在 htaccess 中創建動態 URL

[英]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.

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