0

我有几个域,我想全部重写到一个域。我不希望它重定向,因为我希望 URL 看起来像用户输入的内容。例如,如果他们输入 www.example.com,我希望它从 www.sample.com/default.php 加载页面?from=example

如果您有 www.site.com/var1/var2 使其加载 www.site.com/index.php?one=var1&two=var2,我已经进行了一些重写

是否可以通过 .htaccess 文件来做我正在寻找的事情?我试着环顾四周,却找不到我要找的东西

谢谢

4

2 回答 2

1

如果站点托管在不同的服务器上或不共享公共文档根目录,那么您将不得不依赖 mod_proxy 并且可以使用P重写规则标志。例如,在www.example.com的文档根目录中的 htaccess 文件中的这些规则:

RewriteCond %{HTTP_HOST} ([^.]+)\.com$ [NC]
RewriteRule ^/?$ http://www.sample.com/default.php?from=%1 [L,P]

将接受请求http://www.example.com/并无形地将其代理到http://www.sample.com/default.php?from=example. 浏览器的 URL 地址栏将保持不变http://www.example.com/

请注意,该规则仅与请求 URI 匹配/。如果你想做更多,你必须创建正确的正则表达式和分组。

如果您在 sample.com 站点上有重定向,则需要使用ProxyPassReverse重写重定向。另请查看ProxyPassReverseCookieDomain是否ProxyPassReverseCookiePath涉及 cookie。

如果您可以在 vhost 或服务器配置中执行此操作,那么请考虑简单地使用ProxyPass而不是 mod_rewrite。该ProxyPass指令在 htaccess 文件中不起作用。


编辑:

看到所有内容都在同一个文档根目录中,您不需要代理任何内容。简单地:

RewriteCond %{HTTP_HOST} !^www\.sample\.com$ [NC]
RewriteCond %{HTTP_HOST} ([^.]+)\.com$ [NC]
RewriteRule ^/?$ /default.php?from=%1 [L]
于 2012-12-28T02:42:33.347 回答
0

我使用在线生成器。使用这个生成器:mod-rewrite

于 2012-12-28T02:33:24.347 回答