如何在php中重写Get变量的url [重复]

Posted

技术标签:

【中文标题】如何在php中重写Get变量的url [重复]【英文标题】:How to rewrite url for Get variable in php [duplicate] 【发布时间】:2017-05-10 13:47:50 【问题描述】:

我从未使用过 .htaccess 是我的生活,现在我正在学习它,但我发现它很难理解。

谁能告诉我重写网址的步骤

例如

从这里

www.example.com?s=abc

到这里

www.example.com/abc

【问题讨论】:

【参考方案1】:

.htaccess 实际上只是工作的一半。

这个.htaccess会实现你想要的(我认为)

RewriteEngine On

RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-l
RewriteCond %REQUEST_URI !^.*\.(jpg|css|js|gif|png)$ [NC]
RewriteRule ^(.+)$ index.php?request=$1 [QSA,L]

这个.htaccess 在后台将您的所有请求转换为index.php?request=myurl,而在前面它显示mydomain.com/myurl,但是,它不会对从1 到最后一行所述的扩展执行此操作。 (否则在尝试加载 css、js、图像等时会遇到麻烦)。添加您希望从路由中排除的任何扩展。

然而,在 PHP 中仍然存在捕捉这一点的部分。 Everything 现在将通过您的 index.php 进行路由。这意味着您需要一个脚本来“捕获”请求并手动包含所需的文件。

我将在此处为您粘贴一个非常简单的示例:

<?php 
  $getRequest  = explode('/', $_GET['request']);
  $page = $getRequest[0];

  if( file_exists("/mypages/$page.php") ) 
    require_once('myheader.php');
    require_once("/mypages/$page.php");
    require_once('myfooter.php');
  
  else
   echo "page not found";
  
?>

【讨论】:

添加新答案最好将其标记为重复。 @Babydead 你的意思是你认为你是第一个在 SO 上回答此类问题的人? @EhsanT 否,但已链接的第一个可能的副本根本不相关,第二个可能对新手来说很复杂。哎呀,我是一名高级程序员,但我仍然无法理解大量信息。我很确定这些东西对他没有帮助,而 SO 的目标是帮助人们。没有人会通过在如此古老而庞大的帖子上提出更具体的问题来获得答案。我去过那里,这非常令人沮丧。 好的,很公平。但是通过简单的搜索,OP 可以找到他提出的许多问题。 Some,有些答案很简单,比如你的答案,有些答案更复杂,比如this one。 我已经阅读了这些问题,是的,babydead 我不明白这些答案中的大量内容。这似乎可以理解。非常感谢您对新手的帮助。非常非常感谢

以上是关于如何在php中重写Get变量的url [重复]的主要内容,如果未能解决你的问题,请参考以下文章

htaccess 重写 URL 以仅删除一个 php 文件的 $_GET 查询[重复]

在 URL 重写模式下的 GET 请求中,句点“.”不会进入 PHP 变量 [关闭]

.htaccess 重写仍然可以使用 get 变量的漂亮 url

PHP 的 $_GET 和 URL 重写

如何使用 PHP 捕获整个 URL? [复制]

如何进行简单的url重写[重复]