首页 > 解决方案 > 使用 MySQL 创建 .htaccess 文件 URL 重写参数

问题描述

我有一个包含大约 100 个页面的网站,其中示例 .htaccess 文件具有

RewriteRule    ^1/?$    page1.php    [NC,L] 
RewriteRule    ^2/?$    page2.php    [NC,L] 
RewriteRule    ^3/?$    page3.php    [NC,L]  

问题是这些页面在彼此之间以及在添加时会发生大量重定向

header("location: page1.php");

有效,我希望使用 MySQL 填充它。

我可以改为硬编码

header("location: /1");

但如果 .htaccess 文件中的条目之一发生更改,我必须在很多地方进行更改。

所以我的问题是这可以由 MySQL 控制吗,就像我有一个简单的表

(id,page) values (1,page1.php)    

并且 .htaccess 会根据这个 MySQL 表进行填充。

如果可能的话,实现这一目标的最佳方法是什么。

谢谢。

标签: phpmysql.htaccessapache2

解决方案


您应该使用RewriteMap

它使用 .htaccess 中提到的文本文件,可用于将 RewriteRule 中的“某物”映射到“某物”。

像这样的东西:

RewriteMap p2f txt:/path/to/map.txt
RewriteRule ^([^/]+)/?$ /{p2f:$1|notfound.php} [L]

map.txt 将是:

1 page1.php
2 page2.php
...

Apache 监视文件更改并自动重新加载它。

您将需要更改您的流程,以便在数据库中更新某些内容时,更新文本文件(可以使用 SELECT INTO OUTFILE)。

可以直接查询数据库,但是当我很久以前进行测试时,使用文件更快。


推荐阅读