我开始学习.htaccess
文件的基础知识,在这里我想知道如何使用.htaccess
文件在php中创建树状结构URL。例如,我的层次结构如下: - 科学 - >生物学 - >动物学 - >皮肤病学。和域 www.mydomain.com 。所以
如果我点击科学,则网址应 www.mydomain.com/science 。
在科学下如果我点击生物学,则网址应 www.mydomain.com/science/biology 。
生物学下如果我点击动物学,则网址应 www.mydomain.com/science/biology/zoology 。等等。
以下是我到目前为止所尝试的内容,创建了一个名为branch.php
的页面,如果我点击科学,我将使用网址 www.mydomain.com/在branch.php
文件中编写代码分支/科学和htacces文件
Options -Multiviews
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^branch/(.*) branch.php?branch_name=$1 [L]
所以我可以创建像 www.mydomain.com/science/biology/zoology 这样的网址,而无需使用.htacces
文件创建页面(branch.php)。
答案 0 :(得分:0)
你的想法有点迷失方向。
您在PHP
中生成的任何类型的网址都没有任何限制。
.htaccess
(特别是mod_rewrite
)仅用于将请求(对用户透明)重定向到特定的php文件。
所以,是的,你可以这样做: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没有指向真实文件。
更新:如果您想在$_GET
中使用branch.php
数组,可以执行以下操作:
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]