从不存在的路径创建页面

问题描述 投票:0回答:1

我有一个网站,可以从 Markdown 文件生成页面。我有一个 PHP 脚本,它为它找到的每个 Markdown 文件生成一个 .php 文件,所以例如 localhost/markdown_files/example_page.md 变成了 localhost/pages/example_page.php.

这行得通,但它需要脚本检查所有的 Markdown 文件,即使是添加或编辑一个文件。相反,我改变了它,所以每个页面只在我打开它时生成。如果 localhost/pages/example_page.php 存在,这不是问题,但如果尚未创建 .php 文件,我不知道该怎么办。

我能想到的最好的是:

localhost/pages/ 中捕获 404 并将其重定向到其他地方,同时将原始 URL 作为参数发送。所以打开 localhost/pages/nonexistent_file.php 将重定向到 localhost/generete_file.php,这将创建 localhost/pages/nonexistent_file.php 并再次重定向到原始 URL,到新创建的文件。

但我正在努力寻找如何做到这一点,如果可能的话,更不用说它是否是我问题的正确解决方案。

php html apache
1个回答
0
投票

想通了!我意识到因为我不再提前生成 HTML,而是在每次加载页面时生成它,所以我根本不需要保存文件。所以我在 .htaccess 中添加了:

RewriteCond %{REQUEST_URI}  ^/pages              [NC,OR]
RewriteCond %{REQUEST_URI}  /pages\/[\w]+\.(php) [NC]
RewriteRule .*              /page_generator.php  [L]

这会将 localhost/pages/nonexistent_file.php 重定向到 localhost/page_generator.php,它会在保留原始 URL 的同时输出 HTML,或者如果 Markdown 文件不存在则重定向到 404。目录“localhost/pages”根本不需要存在。

© www.soinside.com 2019 - 2024. All rights reserved.