【问题标题】:Htaccess new line crashes pageHtaccess 新行崩溃页面
【发布时间】:2016-10-29 19:20:55
【问题描述】:

我最近尝试使用 htaccess 隐藏我的 url 中的参数,结果出现 500 服务器错误。

这是我的.htaccess 代码:

<files .htaccess>
    order allow,deny
    deny from all
</files>
Options -Indexes +FollowSymLinks
RewriteEngine on
RewriteBase /
ErrorDocument 404 /404.php
RewriteEngine On    
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s]
RewriteRule ^(.+?)/$ /$1 [R=301,L]
RewriteBase /
RewriteRule ^([^/]+\.php)/.* $1 [R=301,L]

RewriteRule ^buyit\.php$ /buyit.php?qstart=1&gid=73161-645821-36&qid=4&daq=0&preq=14&clk=7 [L]

我想要做的只是我的页面 buyit.php?qsta=1&gid=11-64-36&qid=4&kaq=0&req=14&dlk=7 始终显示为 buyit.php 保持我的变量完整且可用于我的 php 脚本。所以我在 htaccess 中添加了最后一行,但不幸的是它崩溃了。

请告诉我为什么?

【问题讨论】:

    标签: php html .htaccess url-rewriting


    【解决方案1】:

    您的代码正在循环。这是因为您无法匹配重写规则中的查询字符串,因此 URL 如下:

    /buyit.php?qstart=1&gid=73161-645821-36&qid=4&daq=0&preq=14&clk=7 
    

    实际匹配:

    ^buyit\.php$
    

    所以你需要添加一个条件来检查没有查询字符串。将您的最后一条规则更改为:

    RewriteCond %{QUERY_STRING} ^$
    RewriteRule ^buyit\.php$ /buyit.php?qstart=1&gid=73161-645821-36&qid=4&daq=0&preq=14&clk=7 [L]
    

    【讨论】:

      【解决方案2】:

      不幸的是,如果你使用 GET 方法传递值,你不能简单地去掉参数。但是,您可以删除参数名称并使 url 唯一,并且某些不知道参数名称的人不容易理解。

      试试这个 htaccess 代码。

      RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)\.html$ /buyit.php?qsta=$1&gid=$2&qid=$3&kaq=$4&req=$5&dlk=$6 [L]
      

      它将您的 URL 转换为:

       http://yourdomain.com/buyit.php?qsta=1&gid=11-64-36&qid=4&kaq=0&req=14&dlk=7
      

      到这里

      http://ydomain.com/1/11-64-36/4/0/14/7.html
      

      这对您的 SEO 也有好处。

      【讨论】:

      • Thanx 但它不起作用......它就像这条线被完全忽略了,我仍然可以看到我的参数,这可能吗???
      猜你喜欢
      • 2020-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      • 2019-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多