带有 .htaccess 和 PHP 的 URL 中的页面标题


Page Title in URL with .htaccess and Php

我已经把头撞在墙上一整天了,但无法理解如何让我的 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"并弄清楚如何从那里加载正确的页面。

路由页面.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>");
}