Php 重写URL';s到同一个目录
我完全重写了我网站的代码,因为很多东西都可以优化。另外,我目前使用的重写规则也没有我认为的那么优化 我希望URL如下所示:Php 重写URL';s到同一个目录,php,.htaccess,mod-rewrite,url-rewriting,Php,.htaccess,Mod Rewrite,Url Rewriting,我完全重写了我网站的代码,因为很多东西都可以优化。另外,我目前使用的重写规则也没有我认为的那么优化 我希望URL如下所示: Cities: domain.com/new-york domain.com/chicago domain.com/dallas ... Categories: domain.com/fruit domain.com/meat domain.com/beverage ... 目前,我的htaccess文件中有以下代码: RewriteCond %{REQUEST_FIL
Cities:
domain.com/new-york
domain.com/chicago
domain.com/dallas
...
Categories:
domain.com/fruit
domain.com/meat
domain.com/beverage
...
目前,我的htaccess文件中有以下代码:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+) index.php?task=cityorcategory&cityorcat=$1 [L]
我在索引文件中的操作如下:
我需要更改什么才能排除数据库中的变量比较?如果是cityorcategory,例如/city.php,您可以重写到单独的页面
或者您可以将索引.php视为一个分发中心,并在$GET(“任务”)
上建立一个开关。switch ($_GET['task']) {
case 'cityorcategory':
// redirect
break;
case 'countrycategory':
// redirect
break;
default:
echo "Not a category, so process";
break;
}
如果您只是问:我如何知道数据库中是否存在类别。。只需运行一个查询。我假设你无论如何都必须基于类别构建页面。如果运行查询并返回0条记录,则类别不存在,您可以显示defaul索引页
或者,如果您没有很多类别,并且它们没有更改,则可以创建一个类别数组,并使用现有类别对照该数组进行检查。然而,这有点奇怪。但是,如果你死心塌地地地想重蹈覆辙
在最后一种情况下:您可以对现有类别执行HTACCESS匹配,同样:如果这些类别数量有限,请不要更改。您可以使用rewritemaps并让cronjob每隔x分钟构建一次映射。取决于数据更改的频率。所以绝对有必要对数组进行查询或比较?例如,像index.php?task=city&cityname=$1和index.php?task=category&catname=$1这样的东西是不可能的?我猜htaccess无法检测出这两个选项中的哪一个是正确的,因为它们具有相同的URL结构?附言:我有几百个类别,它们几乎每周都在变化。