这应该非常简单,但我希望能够像 php 框架一样使用 url 作为变量。
mywebsite.com/hello-world
我希望我的index.php 将“hello-world”视为变量,并且我希望加载index.php。这是通过 php 完成的还是必须使用 htaccess 文件?
许多 php 框架使用 url 向索引文件发送消息...例如...
mysite.com/controller/view
我如何通过 php 自己路由这些?
一点帮助?
有 2 个步骤:
- 使用重写 url
.htaccess
文件(在 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 文件中,您有请求的 url$_GET['url']
.
Edit:
如果您只想重写某些子目录,您还可以使用如下规则:
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
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)