使用 .htaccess 和 Php URL 中的页面标题

Page Title in URL with .htaccess and Php

我一整天都在用头撞墙,但不明白如何让我的 URL 在 URL 中显示页面标题而不是所有查询参数。

我只是想转换我的这个 URL

http://www.def.com/post.php?id=1

http://www.def.com/my-page-title.html

我阅读了很多关于 SO 的文章和特别问题,但没有一篇真正回答这个问题。我没有足够的声誉将其他类似的链接放在这里。

我只想得到我的页面的标题并在我的 URL 中显示它。

一个相当标准的 .htaccess,它将路由所有在路径中找不到目录或文件的路径:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^route-page\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /route-page.php [L]
</IfModule>

此后,您必须让 /route-page.php(无论您如何命名)读取 URI:$_SERVER['REQUEST_URI'],解析“/my-page-title.html" 并弄清楚如何从那里加载正确的页面。

路线-page.php

<?php
    $path = $_SERVER['REQUEST_URI'];
    //query for row of data with that path...
    //output results

因为您的实际页面名称中可能包含符号,所以最好在数据库的索引列中包含预期路径 "my-page-title.html"。这样就可以根据路径快速抓取页面。此外,由于所有未找到的 URL 都将转到此页面,因此您需要手动处理 404 错误(即,如果您没有找到与指定路径匹配的页面,则输出 404 错误):

if( $pageNotFound ) {
    header("HTTP/1.0 404 Not Found");
    echo("<h1>Page Not Found</h1>");
}