【问题标题】:Create tree stucture url in php using .htaccess使用 .htaccess 在 php 中创建树结构 url
【发布时间】:2016-07-25 02:41:24
【问题描述】:

我开始学习 .htaccess 文件的基础知识,在这里我想知道如何使用 .htaccess 文件在 php 中创建树结构 url。例如,我的层次结构如下:- science->biology->zoology->dermatology。域是 www.mydomain.com。所以

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

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

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

这是我到目前为止所尝试的,创建了一个名为 branch.php 的页面,如果我点击科学,我正在使用 url www.mydomain.com/branch/sciencebranch.php 文件中编写代码/strong> 和 htacces 文件

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

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

【问题讨论】:

    标签: php .htaccess friendly-url


    【解决方案1】:

    你的想法有点迷失方向。

    您在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 没有指向真实文件。


    更新:如果您想在 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]
    

    【讨论】:

    • 但我不想在 url 中显示 branch.php 关键字(文件名),可以吗?
    • 是的,有可能。仔细看看,在我的回答中,url中没有branch关键字。
    • 好的,谢谢你的回答,让我试试这个告诉你。
    • 嗨 Spirite,据我所知 $_SERVER['REQUEST_URI'] 将保存包括查询字符串在内的完整请求路径,所以是否可以使用 GET 方法,例如 $main_branch = $_GET[ 'main_branch'], $sub_branch = $_GET['sub_branch'] 等等?
    • 谢谢你。
    猜你喜欢
    • 2012-12-04
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2011-03-10
    • 1970-01-01
    • 2019-05-09
    相关资源
    最近更新 更多