我开始学习.htaccess
文件的基础知识,在这里我想知道如何使用.htaccess
文件在php中创建树结构url。例如,我有如下层次结构:科学->生物学->动物学->皮肤病学。域名是www.mydomain.com。因此
如果我点击science,Url应该是www.mydomain.com/science
在科学下如果我点击生物学,Url应该是www.mydomain.com/science/biology。
在生物学下如果我点击动物学,Url应该是www.mydomain.com/science/biology/动物学等等
以下是我迄今为止所做的尝试,创建了一个名为branch.php
的页面。如果我点击science,我将使用urlwww.mydomain.com/branch/science和htaces文件在branch.php
文件中编写代码
Options -Multiviews
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^branch/(.*) branch.php?branch_name=$1 [L]
因此,我可以创建类似www.mydomain.com/science/biology/动物学的url,而无需使用.htacces
文件创建页面(branch.php)。
你的思想有点迷失方向。
您在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=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)$ branch.php?main_branch=$1&sub_branch=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ branch.php?main_branch=$1&sub_branch=$2&sub2_branch=$3 [L]