php 伪静态不借助.htaccess怎么做

发布于 2022-09-01 12:35:15 字数 46 浏览 27 评论 0

如题所述,php 伪静态不借助.htaccess怎么做,就是纯php能写吗

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

御守 2022-09-08 12:35:15

PHP只能处理PHP请求,像/post/1024这样的请求,如果Apache或者Nginx不通过重写rewrite把URI信息传给指定的PHP文件,那么PHP就不可能通过$_SERVER['REQUEST_URI']取到这个信息。如果你用的是PHP内置的CLI HTTP Server,倒是可以进行路由,在启动时指定路由文件,比如index.php:
https://wiki.php.net/rfc/builtinwebserver
php -S 127.0.0.1:8080 -t /www /www/index.php

<?php
$url = parse_url($_SERVER['REQUEST_URI']);
$uri = $url['path'];
if (file_exists(dirname(__FILE__).$uri)) {
    return false; //如果请求的文件或目录存在,直接返回
} else {
    print_r($url); //分析URI,进行路由
}

上面这段PHP代码跟下面常用的采用index.php作为前端控制器(路由)的框架重写规则含义相近:

# Apache
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [QSA,L]

# Nginx
location / {
    try_files $uri $uri/ /index.php?$args;
}
幸福%小乖 2022-09-08 12:35:15

image_editoricon25.gif
你可以在每个需要重写的目录里面新建一个index.php.处理内容进行转发。
比如 要转发的地址 http://xxx.xxx.xxx/dirA/dirC/
在dirA中写一个index.php,手动转发给目的地。
image_editoricon25.gif

青衫负雪 2022-09-08 12:35:15

PHP很多框架都有路由功能,会把url按照"/"拆分,解析出控制器、方法、参数,然后框架的控制程序就会调用对应的控制器的相应方法,并把参数传递过去。 当然参数多的时候只保持控制器和方法以目录分隔,其他参数还是能够以查询字符串的形式传递过去的。 可以看下CI框架的Router类。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文