【问题标题】:external links without http|https fails没有 http|https 的外部链接失败
【发布时间】:2013-10-11 16:34:45
【问题描述】:

我一点也不擅长正则表达式。

我使用的 RewriteRule 是:

 RewriteRule ^([a-zA-Z0-9_-]+)$ /kurum.php?sef=$1 [QSA]

哪个转化

http://fxrehber.com/kurum.php?sef=gcm-forexhttp://fxrehber.com/gcm-forex

我的 php 文件将 URL 处理为:

<a href="http://<?php echo $demoUrl ?>" target="_blank">Open Demo Account</a>

如果我的 php 文件中不包含“http://”,则链接将转到

http://fxrehber.com/www.example.com

所以我将数据库中的 URL 保存为:www.example.com

但是现在我需要使用带有 https 的 URL,并且我需要从 php 文件中删除“http://”,我也许可以将数据库中的 URL 同时保存为 www.example.com 和 https://www.example.com

这样做的方法是什么?更改我的 RewriteRule 或使用一些正则表达式修改我的 php 文件?

【问题讨论】:

  • 我没有完全理解你的问题。你能用一两个例子来解释你的问题吗?
  • 嗨,我的数据库中保存了一堆 URL,格式为“www.example.com”。由于 RewriteRule,如果我的 php 文件中不包含“http://”,则链接将转到 fxrehber.com/www.example.com。但我不想在每个链接中添加 http,因为我希望能够保存以 www 和 http/https 格式开头的 URL。所以我需要一个使用正则表达式来检查 URL 的 if/else 结构。如果 URL 以 www 开头,则在其前面添加 http,否则不理会它(对于以 http 或 https 开头的 URL)。我希望我能解释这个问题。顺便说一句,在 db 中添加 http/https 所有 URL 是另一种选择

标签: php regex .htaccess mod-rewrite seo


【解决方案1】:

好的,我非常关心正则表达式和 RewriteRule,所以在解释我的问题时,我理解它可以通过检查 URL 中是否包含 http/https 来简单地解决:

if (0 !== stripos($demoUrl, 'http://') && 0 !== stripos($demoUrl, 'https://')) 
{ $demoUrl = 'http://' . $demoUrl; }

现在我可以将所有 3 种类型的 URL(以 www、http 和 https 开头)保存在数据库中,并且不需要修改旧的。 但我仍然想知道是否有一种方法可以通过重写器使用没有 http/https 的链接。 (正如我之前所说,当我点击我网站中的链接“www.example.com”时,它会尝试访问 www.mysite.com/www.example.com)

【讨论】:

    【解决方案2】:

    rewrite 规则中的正则表达式用于启用干净的 URL。该机制将整个 URI 传递给kurum.php - 通过$_GET['sef'],其中应该发生内容routing

    如果确实存在与请求 URI 匹配的文件/目录,则以下规则将禁用 rewrite

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    RewriteRule ^([a-zA-Z0-9_-]+)$ /kurum.php?sef=$1 [QSA]
    

    【讨论】:

    • 谢谢,但是当我将它们添加到我的 htaccess 文件中时,我仍然收到 404 错误。如果我使用 http 或 https 将所有 URL 保存在数据库中,则不会有问题,但我不想修改所有 URL。我需要可以接受各种 URL(以 www 或 http 开头)的东西。我认为可以使用带有 if/else 结构的正则表达式来完成?喜欢:如果它以 www 开头,则添加 http,否则使用您从数据库中读取的内容...
    猜你喜欢
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多