【问题标题】:htaccess specific queries rewritehtaccess 特定查询重写
【发布时间】:2014-08-12 09:09:45
【问题描述】:

所以我的 htaccess 目前可以在 / 之后获取任何内容并将其作为查询。

所以http://www.website.com/bacon 真的是http://www.website.com/index.php?type=bacon

查询用于生成页面的内容类型。 (一个div根据查询包含不同的信息)

但是,查询只能是 3 种不同的类型。所以我有一个问题,用户要去哪里http://www.website.com/baconandcheese 然后 DIV 会是空的,看起来很尴尬。

所以本质上我只希望接受这 3 个特定查询,其他所有内容都需要重定向到 404 页面。

RewriteRule ^([^\.]+)$ index.php?type=$1 [L]

【问题讨论】:

    标签: php html apache .htaccess mod-rewrite


    【解决方案1】:

    你可以有这样的规则:

    RewriteEngine On
    
    RewriteRule ^(bacon|cheese|ham)/?$ index.php?type=$1 [NC,L,QSA]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . - [L,R=404]
    

    【讨论】:

      【解决方案2】:

      这段代码应该这样做

      #Only your three types
      RewriteRule ^bacon$ http://www.website.com/index.php?type=bacon [nc]
      RewriteRule ^type2$ http://www.website.com/index.php?type=type2 [nc]
      RewriteRule ^type3$ http://www.website.com/index.php?type=type3 [nc]
      #Pass files and folders
      RewriteCond %{SCRIPT_FILENAME} !-d
      RewriteCond %{SCRIPT_FILENAME} !-f
      #Throw 404
      RewriteRule ^([^\.]+)$ - [L,R=404]
      

      但您也可以简单地使用 PHP 发送 404:

      header('HTTP/1.1 404 Not Found');
      exit();
      

      【讨论】:

      • 我已经测试了 htaccess 代码。问题是 URL 与其预期目的发生了变化。所以我输出的链接是website.com/bacon,但现在它被重写为website.com/type?=bacon,当我希望url保持不变但PHP知道幕后发生了什么。
      • 对不起,我的错误,只需删除括号中的 r=301。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-14
      • 2023-03-20
      • 1970-01-01
      相关资源
      最近更新 更多