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

时间:2015-01-28 16:52:22

标签: php .htaccess url mod-rewrite url-rewriting

我整天都在墙上撞墙,但无法理解如何让我的网址在网址中显示网页标题而不是所有查询参数。

我只是想转换我的这个网址

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

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

我在SO上阅读了很多文章和特别的问题,但是他们并没有真正回答这个问题。我没有足够的声誉在这里放置其他类似的链接。

我只想获取页面标题并在我的网址中显示。

1 个答案:

答案 0 :(得分:1)

一个相当标准的.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 [&#39; REQUEST_URI&#39;],解析&#34; / my-page-title html的&#34;并弄清楚如何从那里加载正确的页面。

<强>路由page.php文件

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

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

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