我有一个大约有 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 表进行填充。
如果可能的话,实现这一目标的最佳方法是什么。
谢谢。
最佳答案
您应该使用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 可用于此目的)。
可以直接查询数据库,但是当我很久以前进行测试时,使用文件会更快。
关于php - 使用MySQL创建.htaccess文件URL重写参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55270753/