如何在没有物理页面文件的情况下像 wordpress 一样创建 URL?

JKing

我需要像 wordpress 那样创建普通的 url。例如:https://www.website.ext/mypage并让他们从数据库加载页面,而不仅仅是静态页面文件。但就像 wordpress 和其他 cms 的做法一样。

url参数的使用我很清楚,比如 /mypage?ID=124&fname=John 但那些都是马虎,也可以邀请黑客。如果我可以避免的话,我不希望在我的网址中出现这些东西。

他们如何拥有只存在于数据库中的页面的 url?如何将https://www.website.ext/mypage连接到浏览器中显示的内容,而没有实际的“mypage”文件,并且仍然拥有这些干净的 url?

我只是不知道它是如何完成的。我对 .htaccess 的东西有点搞砸了,但我并没有真正受过 htaccess 的教育。

我想我应该补充一点,我正在使用 php7 和 MySQL 数据库。

jpnee

您可以通过重定向入口页面(例如index.php上的流量来模拟它然后根据请求的 URL 执行一些逻辑以根据$_SERVER["QUERY_STRING"]您可以使用的其他 url 参数(例如$_GET全局变量)呈现实际页面

您可以通过在 上使用.htaccess诸如此类的将流量重定向到单个入口点apache

RewriteEngine On

RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]

Options -Indexes

我创建了一个个人脚本,真正做到这一点,如果你有兴趣,你可以在它的底层逻辑来看看这里在github上。

使用它有缺点,例如404在您自己的路由上处理页面请求。

在被重定向到index.php并假设你URL看起来像这样之后https://sample.com/?page=1

您可以添加 aswitch case以根据该变量呈现页面,例如:

<?php

$page = isset($_GET["page"]) ? $_GET["page"] : 0;

switch($page) {

  case 1:
    require "sample/page/if/one/page.php";
    break;
  case 2:
    require "sample/page/if/two/page.php";
    break;
  default:
    require "default/page/home.php";
    break;
}

这是一个快速而肮脏的例子,但可以通过创建一个路由器类来大大改进。您还可以创建一组可能的页面并检查请求的页面是否在该数组中,然后呈现它,如果没有,则显示您的404页面。

我只是展示了一个非常简约的例子,使用$_GET全局变量来要求一些页面,但这也可以用来DB通过利用变量的值来获取动态数据

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

像Facebook一样的URL

如何在没有参数的情况下将 WordPress URL 重定向到基本 URL

像列表一样的Wordpress Boostrap折叠菜单

如何在不暴露URL中的virtualdir的情况下运行asp.net应用程序。像stackoverflow.com一样吗?

如何使url id参数像路径一样

像论坛一样用连字符重写URL

像 Instagram 个人资料一样重写 URL

如何在没有插件的情况下创建 Wordpress 表单?

如何像wordpress风格一样检查多个文件夹是否存在

如何在wordpress网站上像论坛一样显示帖子

如何让UILabel轻按就像UIButton一样打开URL

Scrapy:如何修复URL,然后像往常一样对页面进行爬网?

我可以像添加链接html一样在wordpress中添加新页面吗

像浏览器一样,如何从C中的URL下载文件?

像setup命令一样,如何在没有任何第三方库的情况下在shell脚本中创建GUI

如何创建像球拍一样的咖喱功能

如何创建新脚本,像wc一样的角色

如何像材料文档中一样创建Snackbar?

如何创建像树一样的数据结构

如何像自己的UI一样创建JqueryUI

Android:像Whatsapp一样在没有GPU OverDraw的情况下绘制背景

如果没有像perl一样的前瞻,模式不存在的情况下如何grep?

我可以让wordpress像堆栈交换一样工作吗?

WordPress Multisite可以像常规网站一样工作吗?

Kotlin:像Java一样创建常规数组

创建React Elemets的引用并像Variable一样使用

像Google Keep一样动态创建edittext视图

在CSS中创建像滴一样的边框效果

像PHP一样在JavaScript中创建数组