我知道類似的問題已經被問到,但我找不到任何有關我的具體「問題」的信息。 我想要做的是在一個非常動態的方式,這意味着「超級用戶」應該能夠在一個管理界面來定義新的路線如下:如果用戶輸入http://www.example.com/nice-url/Joomla-like url rewrite
他應該得到
重定向到http://www.example.com/category.php?id=123而不更改網址。
現在有幾種方法可以實現這一點。無論是我使用的.htaccess這樣的:
RewriteEngine on
RewriteRule ^nice-url category.php?id=123 [L]
這工作,但不是很活躍。我需要讓PHP腳本在底部添加新規則,這不是我想要做的事情。
或者這樣:
的.htaccess
FallbackResource /process.php
process.php
$path = ltrim($_SERVER['REQUEST_URI'], '/');
$elements = explode('/', $path);
if(count($elements) == 0) {
header("Location: http://www.example.com");
exit;
}
$sql = sprintf("SELECT Target FROM urlrewrites WHERE Source = '%s' LIMIT 1", array_shift($elements));
$result = execQuery($sql);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
$target = $row['Target'];
header("Location: ".$target);
exit;
這也適用,但遺憾的是在地址欄中的URL得到改變。兩者中間有沒有辦法?具有PHP的靈活性和RewriteEngine
的「沉默」?偉大的CMS如joomla如何做到這一點?他們是否爲您創建的每個新頁面生成一個htaccess文件? 謝謝!
那麼我知道正則表達式。我的主要問題是:他們如何處理額外的頁面,由用戶添加?我不相信他們在添加新頁面時重寫整個.htaccess文件。問題還在於我不知道具體的路線。 – puelo
在Joomla中,它使用路由機制來實現,其概念在此處描述:https://docs.joomla.org/Supporting_SEF_URLs_in_your_component ,總體思路如下: https://docs.joomla.org/Routing_implementation_details –