使用 .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]
我开始学习 .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]