【问题标题】:Page Title in URL with .htaccess and Php带有 .htaccess 和 Php 的 URL 中的页面标题
【发布时间】:2015-01-28 16:52:22
【问题描述】:

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

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

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

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

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

我只想获取页面的标题并将其显示在我的 URL 中。

【问题讨论】:

  • 你目前使用什么代码?向每个人展示一些研究帮助。
  • 如果您实际上有一个像 index.html 这样的 .html 文件,可能会变得一团糟。您可以运行匹配任何 .html 页面的重写规则,并将页面名称发送到 php 脚本,该脚本将按名称查找帖子。
  • 这是一个关于搜索引擎友好 URL 的教程 - 这可能是一个很好的起点code.tutsplus.com/tutorials/…
  • 我已经尝试过了,但无法理解 php 如何将标题发送回 url

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


【解决方案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['REQUEST_URI'],解析“/my-page-title.html”并弄清楚如何从那里加载正确的页面。

route-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>");
}

【讨论】:

    猜你喜欢
    • 2015-10-03
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 2022-01-19
    • 2011-10-30
    • 2017-12-22
    相关资源
    最近更新 更多