Php URL重写&;重新使用

Php URL重写&;重新使用,php,.htaccess,url-rewriting,url-redirection,Php,.htaccess,Url Rewriting,Url Redirection,我有一个关于URL重写和重定向的问题,我找不到答案(如果有解决方案的话) 目前,我正在与一个网站合作,该网站列出位置,并使用以下URL以ID为变量访问位置(以“1”为例从MySQL数据库中提取相应的记录) location.php?location=1 变量已经从一个数字改为一个URL slug(现在用于从MySQL数据库中提取记录),例如 location.php?location=exeter devon uk 。。。上面的URL现在也使用.htaccess文件重写,以便 /地点/英国埃克塞

我有一个关于URL重写和重定向的问题,我找不到答案(如果有解决方案的话)

目前,我正在与一个网站合作,该网站列出位置,并使用以下URL以ID为变量访问位置(以“1”为例从MySQL数据库中提取相应的记录)

location.php?location=1

变量已经从一个数字改为一个URL slug(现在用于从MySQL数据库中提取记录),例如

location.php?location=exeter devon uk

。。。上面的URL现在也使用.htaccess文件重写,以便

/地点/英国埃克塞特德文郡

所有这些都非常好

现在我的问题是。。。谷歌(和其他搜索引擎)已经对有问题的网站进行了索引/爬网,所有原始URL为-location.php?location=1(或任何数字)的旧链接也都已被索引/爬网,而且这些链接显然不再有效,因为代码适用于较新的数据库URL slug,而不是ID号


我知道,通过URL重写,你应该将旧URL指向新URL,并执行301永久重定向。。。但是我不知道如何将旧ID号定向到一个slug,而不知道如何将两者关联起来???

您无法将ID与新字符串关联起来(ID不再保存在DB中)?是的,ID将始终与数据库中的记录关联,没有ID您无法做到。。。但是URL重定向在.htaccess文件中执行,这显然不知道1。PHP代码,或2。数据库,所以我看不出如何做到这一点。您有两个选择:修改php,使其仍然响应
location.php?location=…
,使用301重定向到正确的slug url,或者您可以将所有
id slug
对导出到简单的明文文件,并在重写规则中使用它。我认为第一个选项是正确的,但我可以帮助第二个选项,如果第二个选项对您来说更快的话。另外,要使用文件,您需要访问server.conf文件,从htaccess导出所有id和slug对都不起作用。导出所有id和slug对只会创建一个巨大的。htaccess充满重定向,不是吗。。。目前有近16000多条记录,因此这将是一个巨大的文件。您无法将ID与新字符串关联(ID不再保存在DB中)?是的,ID将始终与数据库中的记录关联,您不能没有一个。。。但是URL重定向在.htaccess文件中执行,这显然不知道1。PHP代码,或2。数据库,所以我看不出如何做到这一点。您有两个选择:修改php,使其仍然响应
location.php?location=…
,使用301重定向到正确的slug url,或者您可以将所有
id slug
对导出到简单的明文文件,并在重写规则中使用它。我认为第一个选项是正确的,但我可以帮助第二个选项,如果第二个选项对您来说更快的话。另外,要使用文件,您需要访问server.conf文件,从htaccess导出所有id和slug对都不起作用。导出所有id和slug对只会创建一个巨大的。htaccess充满重定向,不是吗。。。目前有近16000多条记录,这将是一个巨大的文件