使用 .htaccess 在 php 中创建树结构 url

Create tree stucture url in php using .htaccess

我开始学习 .htaccess 文件的基础知识,在这里我想知道如何使用 .htaccess 文件在 php 中创建树结构 url。例如,我有这样的层次结构:- 科学->生物学->动物学->皮肤病学。域是 www.mydomain.com。所以

如果我点击科学,Url应该是www.mydomain.com/science

科学下如果我点击biology,Url应该是www.mydomain.com/science/biology

生物学下如果我点击zoology,Url应该是www.mydomain.com/science/biology/zoology 。等等。

这是我到目前为止尝试的方法,创建了一个名为 branch.php 的页面,如果我点击科学,我将使用 url [=36] 在 branch.php 文件中编写代码=]www.mydomain.com/branch/science 和 htacces 文件

Options -Multiviews
Options +FollowSymLinks
RewriteEngine on 
RewriteRule ^branch/(.*) branch.php?branch_name= [L] 

所以我可以像 www.mydomain.com/science/biology/zoology 一样创建 url 而无需创建页面 (branch.php ) 使用 .htacces 文件。

你的思路有点乱。

您在 PHP 中生成的任何类型的 url 没有任何限制。

.htaccess(尤其是mod_rewrite)仅用于将请求重定向(对用户透明)到特定的php-文件。

所以,是的,你可以这样 url:http://www.example.com/science/biology/zoology 而你的 .htacces 应该是这样的:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* branch.php [L]

然后,在 branch.php 中,您应该检查 $_SERVER['REQUEST_URI'](看起来像这样 /science/biology/zoology)并决定向用户显示什么。

需要

RewriteCond %{REQUEST_FILENAME} !-f 来测试请求的 uri 是否指向真实文件。


更新: 如果您想在 branch.php 中使用 $_GET 数组,您可以执行以下操作:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)$ branch.php?main_branch= [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)$ branch.php?main_branch=&sub_branch= [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ branch.php?main_branch=&sub_branch=&sub2_branch= [L]