【问题标题】:.htaccess category subcategory.htaccess 类别子类别
【发布时间】:2016-02-16 12:40:27
【问题描述】:

第一次在这里发帖!

我看到了很多关于 .htaccess 问题的主题,但似乎没有一个能满足我的需求……让我解释一下

我正在开发一个网站,我的客户在该网站上销售多种类型的游乐场玩具。 该网站按类别组织。 Bellow,一个类别的链接:

http://docs.wdesign.com.br/orimad-novo/produtos/playgrounds 这个页面其实是一个categories.php?alias=playgrounds

以下网址适用于“游乐场”类别中的产品

http://docs.wdesign.com.br/orimad-novo/produtos/playgrounds/brink-lar-super 这个页面实际上是一个 produtos-detalhe.php?alias=playgrounds&produto=brink-lar-super

我使用 htaccess 制作了上述 URL,但我的客户希望我去掉两个 URL 中的“produtos”一词,但我似乎无法让它在我的 htaccess 文件上工作......我不是毕竟都熟悉了……我的htaccess在下面

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^/?$ index.php [NC,L]
RewriteRule ^empresa/?$ empresa.php [NC,L]
RewriteRule ^orcamento/?$ orcamento.php [NC,L]
RewriteRule ^orcamento/send/?$ contato-send.php [NC,L]
RewriteRule ^produtos/?$ produtos.php [NC,L]
RewriteRule ^produtos/(.*)/(.*)$ produtos-detalhe.php?alias=$1&produto=$2 [NC,L]
RewriteRule ^produtos/(.+)$ categorias.php?alias=$1 [NC,L]
RewriteRule ^contato/?$ contato.php [NC,L]
RewriteRule ^contato/send?$ contato-send.php [NC,L]
RewriteRule ^localizacao/?$ localizacao.php [NC,L]

请随意浏览网站...希望你们能帮助我 =) 提前致谢!!!!

【问题讨论】:

  • 这听起来有点奇怪......你的问题非常模糊。你没有解释你真正想要做什么,而只是给出一个微弱的暗示,你“想要删除术语 produtos 而不说明事情是如何工作的。你的客户告诉你......我开发了一个网站...... . 但显然你不知道你正在使用的工具以及它们是如何工作的。不要误会,但是 - 为什么你要出售你自己不知道如何处理的解决方案?
  • @arkascha 对不起,我真的不是专业的开发人员,对htaccess也不熟悉,觉得来这里可以帮助我学习更多,呵呵。例如,我的客户希望类别的最终 URL 像 docs.wdesign.com.br/orimad-novo/playground,不带“produtos”一词。这就是我不知道如何在我的 htaccess 文件中执行的操作。无论如何,感谢您的宝贵时间。
  • 好吧,那你为什么不能干脆不说这个词呢?从您发送的链接中删除它,并从您的重写规则中的模式中删除它,以便再次认为匹配。
  • @arkascha 当我从重写规则中的模式中删除它时它不起作用,并且它也与其他模式混淆=\这就是我不知道如何解决=)
  • 在这里找到了一个可行的解决方案stackoverflow.com/questions/4542913/…

标签: php apache .htaccess mod-rewrite


【解决方案1】:

好吧,我在此链接中找到了适合我的解决方案:How to allow three optional parameters in the URL by .htaccess?

我删除了我的 .htaccess 文件的内容并使用了 bt @tttony 提供的示例,如下所示:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]

然后使用他的 php 代码建议,我对 index.php 文件做了一些工作。

if (isset($_SERVER['REQUEST_URI'])){

    $params = explode("/", ltrim($_SERVER['REQUEST_URI'], "/"));
    @$termo1 = $params[1];
    @$termo2 = $params[2];
    $array_exists = array('empresa','produtos','orcamento','contato','localizacao');
    if(!isset($termo1) || $termo1 == "" && !isset($termo2)) {
        include "home.php";
    } elseif(in_array($termo1,$array_exists)){
        include $termo1 . ".php";
    } else {
        if(isset($termo1) && !isset($termo2)){
            include "categorias.php";
        }
        if(isset($termo1) && isset($termo2) && $termo2 == ""){
            include "categorias.php";
        }
        if(isset($termo1) && isset($termo2) && !$termo2 == ""){
            include "produtos-detalhe.php";
        }
    }    
}

还对文件 categorias.php 和 produtos-detalhe.php 进行了一些重写,因为它们从 $_GET 变量中获取值,现在它们从 $termo1 和 $termo2 中获取相同的值。

就是这样......可能不是那么完美,但它正在工作。 也许有一天,很快,我会学到一个更好的解决方案。 这就是生活,我们一直在学习 =)

可视化链接:http://docs.wdesign.com.br/orimad-novo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 2017-09-05
    • 2015-04-05
    相关资源
    最近更新 更多