【发布时间】:2015-07-31 17:11:43
【问题描述】:
我知道已经有人问过类似的问题,但我找不到任何关于我的特定“问题”的信息。 我想做的是以一种非常动态的方式进行以下操作,这意味着“超级用户”应该能够在管理界面中定义新路由:
如果用户输入http://www.example.com/nice-url/
他应该被重定向到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 的“沉默”?像 joomla 这样的优秀 CMS 是如何做到的?他们是否为您创建的每个新页面生成一个 htaccess 文件?
谢谢!
【问题讨论】:
标签: php apache .htaccess mod-rewrite joomla