【发布时间】: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