【问题标题】:Combining URI_REQUEST and HTTP_HOST in an .htaccess file在 .htaccess 文件中组合 URI_REQUEST 和 HTTP_HOST
【发布时间】:2012-07-14 09:20:31
【问题描述】:

我想使用 PHP 和 Apache/.htaccess 来缩短链接。

我网站上的链接如下所示:

https://mysite.com/item/this-is-a-book-on-toasters

这就是我希望缩短的链接查找上述链接的方式。

https://ms.co/Im8y2x

目前,这是我的 .htaccess 文件中的内容:

RewriteCond %{HTTP_HOST} ^ms\.co$ [NC]
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ https://mysite.com/item/$1 [L,R=301]

所以去 ms.co 确实会重定向到 mysite.com。我的问题是我在 mysite.com/item 上的 PHP 代码不知道 6 位字符串(在本例中为 Im8y2x),因此我无法在数据库中查询 6 位字符串的匹配 URI(在本例中, /this-is-a-book-on-toasters)。

我知道我需要在我的 .htaccess 重写规则中添加一些东西我只是不确定它是什么。有人可以帮忙吗?

【问题讨论】:

    标签: php .htaccess codeigniter mod-rewrite url-shortener


    【解决方案1】:

    我想出了自己的问题。如果您只是省略R=301,那么您将保留URI(在本例中为Im8y2x),然后您可以使用您的脚本语言(在我的示例中为PHP)访问它以将其重定向到完整长度的URI。

    所以而不是这个:

    RewriteRule ^(.*)$ https://mysite.com/item/$1 [L,R=301]
    

    这样做:

    RewriteRule ^(.*)$ https://mysite.com/item/$1 [L] 
    // the only difference is the lack of ",R=301"
    

    【讨论】:

      【解决方案2】:

      这个怎么样?

      RewriteCond %{HTTP_HOST} ^ms\.co/$1 [NC]
      RewriteCond %{HTTPS} =on
      RewriteRule ^(.*)$ https://mysite.com/item/$1 [L,R=301]
      

      【讨论】:

      • 嗯,在添加 /$1 之后,现在它没有重定向到 mysite.com,所以我认为这是不正确的。
      • 嗨@Robert,还有什么建议吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      • 2011-12-27
      • 1970-01-01
      • 2016-08-26
      • 2010-09-07
      相关资源
      最近更新 更多