重定向内容而不使用HTTP

时间:2012-10-30 14:20:27

标签: apache .htaccess

我想通过直接访问“http://url.com/something:PORT”让apache响应格式为“http://url.com/dir/ID”的服务器请求,其中ID为由用户设置,PORT由ID确定(它们不是相同的值)。

我已尝试使用“重定向”,但这只是发送一个HTTP重定向,我的目标是直接将“http://url.com/something:PORT”包含到“http:// url”。 COM /目录/ ID”。

这可能吗?

修改
例如:
请求者转到http://url.com/dir/ID并且不会被重定向到http://url.com/something:PORT,但会获得http://url.com/something:PORT的实际内容,就好像原始请求是在此处一样。

2 个答案:

答案 0 :(得分:1)

您可以尝试安装mod_rewrite并将以下内容放在.htaccess或httpd.conf中:

RewriteEngine On
RewriteBase /something/
RewriteRule ^(url.com/dir/*)$ http://url.com:$1 [R=301,L]

这是一个301'永久'重定向,它还会将搜索引擎中的链接网址更改为您的最终地址。更多信息here

您可能需要更改Regex以适应您的情况,我不能100%确定您要查找的结果。如果您可以提供一些用户将访问的特定URL的示例以及您希望将它们发送给我的特定URL,我可以为您提供更多帮助。

答案 1 :(得分:1)

尝试在文档根目录中的htaccess文件中添加这些规则:

RewriteEngine On
RewriteRule ^/?dir/ID$ /something:PORT [L]

如果您指的是资源实际上位于something:PORT的另一台服务器上,您需要将请求发送到mod_proxy,以便它可以为您反向代理。如果你没有打开mod_proxy,那么你可以做的不多,也许找到一些php代理解决方案。

在htaccess中,您可以使用P标志调用mod_proxy,例如:

RewriteEngine On
RewriteRule ^/?dir/ID$ http://something:PORT/ [L,P]