PHP 将 url 传递给 index.php

标签 php .htaccess

这应该非常简单,但我希望能够像 php 框架那样将 url 用作变量。

mywebsite.com/hello-world

我希望我的 index.php 将“hello-world”视为一个变量,并且我希望加载 index.php。这是通过 php 完成的还是我必须使用 htaccess 文件?

许多 php 框架使用 url 向索引文件发送消息...例如...

mysite.com/controller/view

我自己如何通过 php 路由它们?

一点帮助?

最佳答案

有两个步骤:

  1. 使用 .htaccess 文件重写 url(在 linux 上)。您需要确保所有请求都转到您的 php 文件,因此您需要将所有对不存在的文件和文件夹的请求重写到您的 php 文件;
  2. 在您的 php 文件中,您分析 url(例如使用 $_SERVER['REQUEST_URI'])并根据其内容采取行动。

对于第 1 步,您可以使用如下内容:

RewriteEngine On
RewriteBase /

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

然后在第 2 步的 php 文件中。您在 $_GET['url'] 中有请求的 url。

编辑:

如果你只想重写某些子目录,你也可以使用这样的规则:

RewriteRule ^sub/dir/to/rewrite/(.*)$ your_file.php?url=$1 [L,QSA]

一些细节:

  • ^(.*)$ 捕获开始 ^ 和结束 $ 之间的所有内容(所有字符)。它们是使用括号捕获的,因此您可以在查询字符串中使用它们,如 $1。在编辑的例子中,只有 ..../rewrite/ 之后的部分被捕获;
  • [ ... ] 之间的选项表示它是 L 最后要处理的规则,QSA 表示原始查询字符串是也添加到新的网址。这意味着如果你的 url 是 /hello-world?some_var=4 some_var 变量被附加到重写的 url: your_file.php?url=hello -world&some_var=4.

关于PHP 将 url 传递给 index.php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17246714/

相关文章:

php - 在使用CSS和PHP时需要帮助

PHP MySQL 将信息从表单插入数据库

PHP Google Drive API - 文件上传仅作为 "Untitled"- 文件或只是没有内容

php - 在结果中按特定单词选择和分组 MySQL 列

javascript - 将post数据传递给php函数

php - $_GET URL 来自 ?url=http ://google. com

php - .htaccess 多 URL 重写

php - 我如何使用 htaccess 强制重定向到安全域

php - 如何使用 mod rewrite/htaccess 创建带有两个或多个参数的友好 URL?

wordpress - 已添加 SSL。现在 W3 Total Cache 将页面重定向到缓存 _index.html_gzip 文件