这应该非常简单,但是我希望能够像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.