1

如何在不使用 PHP 中的 get 变量的情况下使视图包含

我正在尝试像这样显示帖子/ ID

www.domain.com/view/1234

代替

www.domain.com/view.php?id=1234
4

4 回答 4

3

假设您有一个mod_rewrite启用了该模块的 Apache 服务器,您可以创建一个.htaccess包含以下内容的新文件:

// First of all we want to set the FollowSymlinks option, 
// and turn the RewriteEngine on
Options +FollowSymlinks
RewriteEngine on

// This is the rule that changes the URL
RewriteRule ^view/([^/.]+)/?$ view.php?id=$1 [L]

这将完全按照您的意愿进行并将任何重定向/view/123view.php?id=123.

于 2013-09-24T15:41:43.183 回答
1

如果你正在寻找的是解析 uri 的能力,你可以使用这个:

$uri = $_SERVER["REQUEST_URI"]
$parts = explode("/",$uri)

$parts 数组中的最后一个元素应该是您的视图 ID。

Drupal(1) 包含以下函数来执行此操作:

function arg($index) {
  static $arguments, $q;

  if (empty($arguments) || $q != $_GET['q']) {
    $arguments = explode('/', $_GET['q']);
    $q = $_GET['q'];
  }

  if (isset($arguments[$index])) {
    return $arguments[$index];
  }
}

(1) 我不提倡使用 Drupal,我只是将它作为一个例子。

于 2013-09-24T15:34:18.927 回答
1

这是通过网络服务器 url 重写来完成的。

以下是 Apache 的一些参考资料(使用mod_rewrite):

于 2013-09-24T15:34:30.693 回答
0

您需要使用 htaccess 重写 URL 并使用 PHP 以某种方式拦截它并从某处加载文件。

  1. 用 mod_rewrite 重写 URL(即:domain.com/23234234/0 到 domain.com?id=23234234&nr=0)
  2. 调用数据库,请求 id 为 23234234 的帖子
  3. 显示给用户

是你在找什么吗?

(基于之前的答案)

于 2013-09-24T15:34:46.470 回答