【问题标题】:.htaccess read from MySQL.htaccess 从 MySQL 读取
【发布时间】:2015-03-04 19:11:02
【问题描述】:

我有一个用于虚 URL 的简单 .htaccess 文件,如下所示:

RewriteEngine On
RewriteRule   ^example-category/?$   category.php?id=1  [NC]

我们的想法是所有类别的 URL,而不是看起来凌乱的重定向到简单的英文版本。

我的类别存储在 MySQL 数据库中。所以我想知道是否可以(并且建议)直接从数据库中读取 .htaccess 文件。这样,如果我添加或删除一个类别,虚 URL 将相应地更新,而无需手动干预。

这是个好主意吗?如果是这样,您如何获取 .htaccess 文件以从 MySQL 中读取?

谢谢

【问题讨论】:

  • 为什么不能将^(.*)$ 重写为category.php?name=$1,然后在该脚本中查找相关类别?
  • 你能告诉我那条线是做什么的吗?我是 htaccess 文件的新手。谢谢!
  • 它会采用任何使用的路径,然后调用 category.php 并将原始路径作为 name 参数的值提供(后一部分不是绝对必要的,因为 PHP 总是可以使用$_SERVER['REQUEST_URI']获取原始路径信息)。
  • 我永远不会自动化 .htaccess 文件的任何内容。文件太重要了,在我看来太危险了。

标签: php mysql .htaccess


【解决方案1】:

您可以使用类别name 而不是使用ID。这是一个简单的例子。

htaccess 文件。

RewriteEngine On
RewriteCond %{REQUEST_FILEMAME} !-f
RewriteCond %{REQUEST_FILEMAME} !-d
RewriteRule   ^([^/]+)/?$   /category.php?name=$1  [NC]

这将采用类似的网址

http://example.com/books/ 并将其路由到您的 php 文件。

然后在您的 php 文件中,您可以通过类似这样的方式获取它以使用 name

<?php

$cat = $_GET["name"];

$query = "SELECT * FROM categories WHERE name='".$cat."'";

?>

这不是一个完整的 PHP 示例。只是向您展示如何使用名称而不是 ID。注意:我没有考虑通过mysql等的安全性。

【讨论】:

    猜你喜欢
    • 2016-08-26
    • 2023-03-31
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 2013-03-27
    • 2015-12-02
    • 2011-06-06
    • 2023-03-16
    相关资源
    最近更新 更多