【问题标题】:.htaccess Rewrite/Redirect mod or PHP script.htaccess 重写/重定向 mod 或 PHP 脚本
【发布时间】:2012-08-02 22:32:29
【问题描述】:

所以目前我工作的电子商务公司正在从基于 .NET 的平台过渡到基于 Magento PHP 的网站。我遇到的问题是,我们目前有 1000 个着陆页在搜索引擎上排名很高。我无法在新平台 Magento 中对所有这些页面进行 301 处理,而且我知道由于性能问题,我无法将 1000 个静态重定向添加到 .htaccess 文件中。

所以我的问题是,有没有办法为我们的数据库中生成索引页面 URL 的变量创建重写或重定向规则。如果有,在性能方面,仅使用 .htaccess 文件、仅使用 PHP 脚本或两者结合会更明智吗?

这是我们当前 URL 之一的示例以及我们希望将其重定向到的示例:

当前网址 /Clear_For_Life-Aquariums_Bowls-AT-70_180-AQAQ-ct.html

以下是我们用于生成重写的数据的细分;

  1. /Clear_For_Life = DB 中的供应商名称列
  2. Aquariums_Bowls = DB 中的子类别列
  3. AT = DB 中的 VendorCode 列
  4. 70_180 = 数据库中的 PriceRange 列
  5. AQAQ = 数据库中的 CategoryId 列

希望重定向到的 URL; /clear-for-life-aquariums-bowl

这里的任何帮助或建议将不胜感激。

【问题讨论】:

  • 数据库调用和 php 脚本真的会比 apache 处理的 htaccess 文件更高效吗?
  • 我只是不确定仅使用 .htaccess 文件的重写和重定向组合是否甚至可以处理重写和重定向旧 URL 的复杂性。你的问题几乎也包含了我的部分问题?
  • 你有1000个静态页面,1个解析请求url的动态页面吗?
  • 一个解析请求url的动态页面。

标签: php .htaccess url redirect rewrite


【解决方案1】:

所以我的问题是,有没有办法为我们的数据库中生成索引页面 URL 的变量创建重写或重定向规则。如果有,在性能方面,仅使用 .htaccess 文件、仅使用 PHP 脚本或两者结合会更明智吗?

这听起来像是RewriteMap 的工作。您需要访问服务器或虚拟主机配置并创建地图。您可以使用此映射来调用可以从数据库中获取某些内容的脚本,然后决定新 URI 的外观。 RewriteMap 的最简单用法可能是:

RewriteMap remap prg:/path/to/script

然后你可以简单地做:

RewriteRule ^(.*)$ /${remap:$1|$1} [L]

/path/to/script 需要接受Clear_For_Life-Aquariums_Bowls-AT-70_180-AQAQ-ct.html 之类的输入,对其进行解析,然后正确输出clear-for-life-aquariums-bowl

【讨论】:

  • 谢谢乔恩,我想这可能正是我需要的。
【解决方案2】:

我不相信您可以使用 mod rewrite 更改大小写或替换字符('_' 到 '-')。

为什么不能对所有这些页面进行 301 处理? 如果使用 .NET 访问它们,那么无论您在哪里进行路由/解析 url,都应该有一行代码来执行 php 重定向。

【讨论】:

  • 字符替换可以通过像这样的 mod rewrite 来实现;Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteRule !\.(html|php)$ - [S=4] RewriteRule ^([^_] *)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5 [E=uscor:Yes] RewriteRule ^ ([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4 [E=uscor:Yes] RewriteRule ^([^_] *)_([^_]*)_(.*)$ $1-$2-$3 [E=uscor:Yes] RewriteRule ^([^_]*)_(.*)$ $1-$2 [E=uscor :Yes] RewriteCond %{ENV:uscor} ^Yes$ RewriteRule (.*) d.com/$1 [R=301,L]
  • 一旦我们进行转换,旧的 .NET 服务器就会消失。
【解决方案3】:

我说使用 htaccess,并编写一个简单的实用程序从 301 详细信息列表中生成所述 htaccess 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    相关资源
    最近更新 更多