如何在我的域中管理多个文件夹?

时间:2011-12-27 20:07:52

标签: apache dns

我想创建这样的子域:

domain.com/type/city

一个例子:

domain.com/restaurants/new_york
domain.com/hotels/new_york
domain.com/restaurants/chicago

我在mysql数据库中有数千个城市。

我想到了一些选择:

  • 带有index.php的数千个文件夹用于重定向(我认为错误的方式)。
  • 使用所有链接(domain.com?type=hotels&city=chicago)创建一个站点地图,并按照数据库的代码管理它们。
  • 阿帕奇?

请问,这将是最好的方式吗?提前谢谢!

2 个答案:

答案 0 :(得分:1)

您可以结合使用PHP和Apache配置来解决这个问题。这是最常见的解决方案,可以在流行的PHP网站软件中看到,例如Drupal和Wordpress。

这个想法是让Apache将所有流量发送到一个index.php文件,并将其余路径作为PHP的参数传递给它来处理它。

你需要小心一些边缘箱;如果请求./public/styles.css等文件,您不希望通过PHP应用程序提供服务,但希望apache直接提供该文件。 现有文件需要由apache处理,其他所有应用程序都由处理。

.htaccess

  # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

第一行告诉Apache自己发送普通文件。第二行对现有目录执行相同操作。第三行避免请求example.com/favicon.ico的浏览器(最明显的是版本IE6)不会破坏您的PHP应用程序。

然后它将所有内容传递给index.php,并将其余路径添加到q param中。

在index.php中,您可以阅读该内容,然后采取以下措施:

<?php
$path = $_GET['q'];
$params = explode('/', $path);

print $path;
print_r($params);
?>

答案 1 :(得分:0)

成千上万的文件夹肯定是错误的。

如果您开始创建包含domain.com/?type=hotels&city=chicago类型链接的站点地图,您将获得一个可以编程方式管理的漂亮结构。

首先启动它并开始工作,然后查找.htaccess和mod_rewrite,然后您可以使用它从domain.com/type/city映射到已经运行的链接。

这似乎是一个很好的策略,可以让你的工作变得快速,并最终得到最漂亮的解决方案。