【问题标题】:Search and replace a keyword in the response content using htaccess使用 htaccess 在响应内容中搜索和替换关键字
【发布时间】:2012-01-29 12:56:41
【问题描述】:

我需要在 100,000 个文件中重写一个关键字(旧域名),我无法在数据库中搜索和替换它。 也许有 htaccess 的解决方案?

旧: 黄狗总是点击 www.domainname1.tld

新: 黄狗总是点击 www.domainname2.tld

在 PHP 中:

$bodytag = "the yellow dog clicks always www.domainname1.tld";

$bodytag = str_replace("domainname1.tld", "domainname2.tld", $bodytag);

【问题讨论】:

  • 您需要编辑 HTML 文件吗?或者您希望 Apache 即时更改内容?我不确定你在问什么。

标签: php apache .htaccess search replace


【解决方案1】:

我不知道在 htaccess 中执行此操作的方法。有一些 Apache 模块旨在操作内容。例如,mod_substitute。

http://httpd.apache.org/docs/2.2/mod/mod_substitute.html

<Location />
    AddOutputFilterByType SUBSTITUTE text/html
    Substitute s/www.domainname1.tld/www.domainname2.tld/ni
</Location>

信用:http://corpocrat.com/2008/09/19/install-apache-mod_substitute/

【讨论】:

    【解决方案2】:

    更改文件内容超出了.htaccess 文件或一般Apache 的范围。

    如果链接指向域,则将调用该域。您可以在该域上添加重定向(here's 示例如何),但您不能阻止请求以旧域结束。

    【讨论】:

      【解决方案3】:

      我有一个类似的案例,我们将很多文件移动到一个新的文件夹结构中:

      旧结构:

      /css/
      /images/
      /js
      /*.html
      

      新结构:

      /common/css/
      /common/images/
      /common/js
      /<various_html_folders/*.html
      

      问题是我的 html 文件通过相对路径引用了 css、js 和图像,并且使用新结构我必须更新数千个这些引用。

      所以我在 Apache 中遇到了 mod_rewrite,它会在响应正文发送到客户端之前重写它。我在我的 .htaccess 文件中添加了以下 4 行,以便将所有 href="css/ 更改为 href="/common/css/"

      AddOutputFilterByType SUBSTITUTE text/html
      Substitute 's|href="css/|="/common/css/|i'
      Substitute 's|href="js/|="/common/js/|i'
      Substitute 's|href="images/|="/common/images/|i'
      

      瞧! css、javascripts 和图像像以前一样工作,无需更新我的任何 html 文件。

      免责声明:我尚未研究这样做对性能的影响。请记住,对于您添加的每一行 Substitute,整个响应正文都会执行一个正则表达式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多