【问题标题】:.htaccess RewriteRule plus httpd.conf ScriptAliasMatch.htaccess RewriteRule 加上 httpd.conf ScriptAliasMatch
【发布时间】:2015-02-05 22:53:20
【问题描述】:

我已经成功地将 301 重定向添加到我们的站点 .htaccess 文件中,这样我就可以将旧站点中的 url 指向我们新站点上的正确 url,但是在旧 url 包含“.pgm”。

“.pgm”是我们 IBM iSeries 服务器上的 RPG 程序,新站点上的 url 在 httpd.conf 文件中重定向如下:

ScriptAliasMatch (.*)\.pgm$ /QSYS.LIB/B2CRLIVE.LIB/$1.pgm

虚链接和旧站点的所有 url 重定向都在 .htaccess 中完成,并且这些都可以正常工作,除非旧 url 包含“.pgm”,在这种情况下,无论我尝试做什么我最终得到一个 404 页面。

旧网站网址的一个例子是:

http://mydomain/b2c/b2chome.pgm

我使用的重定向是:

RewriteRule b2chome /category/0/Product\ Range [R=301,L]

如果 url 是这样的话,这很好用:

http://mydomain/b2c/b2chome

但是一旦你将“.pgm”添加到任何网址,它只会导致一个 404 页面。

ScriptAliasMatch 用于将“.pgm's”指向正确的程序库,但旧站点上使用的程序在所指向的库中不存在。不过我不认为这是问题所在,因为我认为如果是这样,我会收到某种脚本错误。

有什么想法吗?

【问题讨论】:

  • 不知道是不是我和我的特殊英语,但我听不懂。您重定向(尝试)http://mydomain/b2c/b2chome.pgm -> http://mydomain/category/0/Product Range 及之后?
  • 这个重定向的结果是原来的url保留下来,显示404页面。如果 url 不包含 .pgm,则重定向将起作用,但由于某种原因,重写对包含“.pgm”的 url 没有任何影响。希望这能让它更清楚一点。
  • 在旧网站上:使用RewriteRule b2chome /category/0/Product\ Range [R=301,L]。当您使用http://mydomain/b2c/b2chome.pgm 时,它是指向http://mydomain/category/0/Product Range 的外部重定向...
  • 但我不明白为什么mydomain/b2c/b2chome 会重定向,但mydomain/b2c/b2chome.pgm 不会。不幸的是,旧网站上的许多页面都以 .pgm 结尾。
  • 我想知道我是否将 ScriptAliasMatch 更改为仅适用于“mydomain.com/script.pgm”形式的新网址,而不适用于“mydomain.com/b2c/”形式的旧网址script.pgm”如果这行得通?不幸的是,更改 httpd.conf 文件意味着要关闭生产服务器进行测试。

标签: apache .htaccess mod-rewrite redirect


【解决方案1】:

我确实找到了解决方案,尽管不是我想要的。我在 ScriptAliasMatch 上方的 httpd.conf 文件中添加了一个重定向,如下所示:

Redirect 301 /b2c/b2chome.pgm http://www.domain.com/category.pgm

这至少有效,即使我现在只能将非 pgm 重定向放在 .htaccess 文件中。 .pgm 重定向的数量至少是有限的,而我一直在从某个地方引用的旧站点中找到非 pgm 链接,通常是论坛上的旧链接。

【讨论】:

    猜你喜欢
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 2020-03-16
    • 2010-12-15
    • 1970-01-01
    • 2018-09-16
    • 2013-05-10
    相关资源
    最近更新 更多