我有几个域,我想要全部重写到一个域。我不希望它重定向,因为我希望URL看起来像用户输入的内容。例如,如果他们输入www.example.com我希望它从www.sample.com/default.php加载页面?从例如=
如果你有www.site.com/var1/var2加载www.site.com/index.php?one=var1&two=var2
,我已经做了一些重写工作是否可以通过.htaccess文件执行我要查找的内容?我试着环顾四周,无法找到我想要的东西
由于
答案 0 :(得分: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
。浏览器的网址地址栏将保持http://www.example.com/
。
请注意,该规则仅与请求URI /
匹配。如果你想做更多,你必须创建正确的正则表达式和分组。
如果您在sample.com网站上有重定向,则需要使用ProxyPassReverse
来重写重定向。如果涉及到Cookie,请参阅ProxyPassReverseCookieDomain
和ProxyPassReverseCookiePath
。
如果您可以在vhost或服务器配置中执行此操作,请考虑使用ProxyPass
而不是mod_rewrite。 ProxyPass
指令在htaccess文件中不起作用。
编辑:
看到所有内容在同一文档根目录中,您不需要代理任何内容。简单地:
RewriteCond %{HTTP_HOST} !^www\.sample\.com$ [NC]
RewriteCond %{HTTP_HOST} ([^.]+)\.com$ [NC]
RewriteRule ^/?$ /default.php?from=%1 [L]
答案 1 :(得分:0)
我使用在线生成器。 使用此生成器:mod-rewrite