我想创建这样的子域:
domain.com/type/city
一个例子:
domain.com/restaurants/new_york
domain.com/hotels/new_york
domain.com/restaurants/chicago
我在mysql数据库中有数千个城市。
我想到了一些选择:
请问,这将是最好的方式吗?提前谢谢!
答案 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映射到已经运行的链接。
这似乎是一个很好的策略,可以让你的工作变得快速,并最终得到最漂亮的解决方案。