这应该非常简单,但我希望能够像 php 框架一样使用 url 作为变量。
mywebsite.com/hello-world
Run Code Online (Sandbox Code Playgroud)
我希望我的index.php 将“hello-world”视为变量,并且我希望加载index.php。这是通过 php 完成的还是必须使用 htaccess 文件?
许多 php 框架使用 url 向索引文件发送消息...例如...
mysite.com/controller/view
Run Code Online (Sandbox Code Playgroud)
我如何通过 php 自己路由这些?
一点帮助?
有 2 个步骤:
.htaccess(在 Linux 上)。您需要确保所有请求都发送到您的 php 文件,因此您需要将对不存在的文件和文件夹的所有请求重写到您的 php 文件;$_SERVER['REQUEST_URI'])并根据其内容采取操作。对于第 1 步,您可以使用以下内容:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ your_file.php?url=$1 [L,QSA]
Run Code Online (Sandbox Code Playgroud)
然后在步骤 2 中的 php 文件中,您将请求的 url 放在$_GET['url'].
编辑:
如果您只想重写某些子目录,您还可以使用如下规则:
RewriteRule ^sub/dir/to/rewrite/(.*)$ your_file.php?url=$1 [L,QSA]
Run Code Online (Sandbox Code Playgroud)
一些细节:
^(.*)$捕获 start^和 end之间的所有内容(所有字符) $。它们是使用括号捕获的,以便您可以在查询字符串中使用它们,例如$1. ..../rewrite/在编辑的示例中,仅捕获之后的部分;[ ... ]意味着它是L要处理的最后一条规则,并且QSA原始查询字符串也被添加到新的 url 中。这意味着,如果您的 url 是/hello-world?some_var=4变量some_var,则会将其附加到重写的 url: 中your_file.php?url=hello-world&some_var=4。