Mod重写基本URL

时间:2012-12-28 02:11:33

标签: php .htaccess routing

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

如果你有www.site.com/var1/var2加载www.site.com/index.php?one=var1&two=var2

,我已经做了一些重写工作

是否可以通过.htaccess文件执行我要查找的内容?我试着环顾四周,无法找到我想要的东西

由于

2 个答案:

答案 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,请参阅ProxyPassReverseCookieDomainProxyPassReverseCookiePath

如果您可以在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