如何进行屏蔽转发URL的.htaccess重写?

时间:2012-01-07 06:52:31

标签: .htaccess mod-rewrite

我有一个网址是www.blahblah.com/something

这是一个远程服务,我没有任何关系。

如何在我自己的服务器上使用.htaccess并从www.myurl.com重写,以便显示的内容全部是www.blahblah.com/something,但地址栏仍然显示为www.myurl.com

3 个答案:

答案 0 :(得分:1)

不,外国网址无法做到这一点。

但是,您可以在本地执行此操作。例如,看看这个htaccess文件:

RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteRule ^some/test/url$ index.php?some=test&or=url [L]

在这种情况下,如果您访问www.myurl.com/some/test/url,它将在浏览器中显示,但您的服务器实际上将在文档根目录中使用参数index.php运行some=test&or=url。< / p>

这仅适用于在服务器上运行的脚本。您无法在其他服务器/域上执行此操作。如果您尝试此操作(例如,通过将上面示例中的index.php?some=test&or=url更改为http://www.blahblah.com/something),则apache会将浏览器重定向到该网址。

htaccess(Apache)与用户建立连接,用户期待您的服务器响应。如果您尝试从其他服务器加载内容,Apache必须建立该连接,加载生成的HTML或其他任何内容,然后将其传递给您。但这会变得混乱,特别是当你进入cookie,SSL,javascript等等时。

我的问题是:你为什么真的需要这个?如果用户的网址发生变化,我不确定为什么会出现问题。如果这是一项你无法控制的服务,为什么要将它们发送给它呢?

您可能希望研究有关缓存服务器的更多信息,或者使用PHP来对您想要的服务器进行http调用并“传递”内容,假设您毫无疑问地知道cookie或SSL不会出现问题管他呢。但同样,为什么不将它们发送到正确的URL?

答案 1 :(得分:1)

试试这个:

RewriteCond %{HTTP_HOST} ^DomainA.com
RewriteRule ^(.*) http://DomainB.com/$1 [P]

它对我有用。

来源:http://www.inmotionhosting.com/support/website/htaccess/redirect-without-changing-url

答案 2 :(得分:0)

mod_rewrite是正确的方法。

  1. 确保在我们的apache配置中激活了mod_rewrite。
  2. 添加到.htaccess

    RewriteEngine On RewriteBase /
    RewriteCond%{HTTP_HOST} ^ www \ .blahblah \ .com $ [NC]
    RewriteRule ^(。*)$ http://www.myurl.com/ $ 1 [R = 301,L]

  3. RewriteCond定义条件。在这种情况下,如果http_Host是www.blahblah.com
    RewriteRule定义了要做的事情。在这种情况下,转发到您的目标域。 $ 1是您网址的其余部分

    您可以在此处找到更多详细信息:http://httpd.apache.org/docs/current/mod/mod_rewrite.html