PHP将URL传递给index.php

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

mywebsite.com/hello-world

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

许多php框架都使用url将消息发送到索引文件…例如.

mysite.com/controller/view

我如何自己通过php路由这些?

一点帮助?

解决方法:

分两个步骤:

>使用.htaccess文件重写url(在linux上).您需要确保所有请求都发送到您的php文件,因此您需要将所有对不存在的文件和文件夹的请求重写为您的php文件;
>在您的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 Last规则,并且QSA还将原始查询字符串也添加到新的url中.这意味着,如果您的URL是/ hello-world?some_var = 4,则some_var变量将附加到重写的URL:your_file.php?url = hello-world& some_var = 4.

上一篇:htaccess URL重写最大参数长度


下一篇:php和htaccess,如何仅在一个目录中禁用图像缓存