1

我需要重写:

  • laptop.example.comwww.example.com/?c=1.
  • phone.example.comwww.example.com/?c=2

它不必是动态的或任何东西。我只想要一些硬编码的重写。

目前我正在尝试这个,它正在重定向,而不是重写:

RewriteCond %{HTTP_HOST} ^laptop.example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/?c=1$1 [QSA,L]

mod rewrite 语法对我来说太莫名其妙了,我无法摆脱它。

我不想做 301 重定向。我想做 URL 重写,以便用户看到没有参数的原始子域 URL,但在内部它是作为后者发送的。

我的 .htaccess 文件中已经有几次重写;它们应该此重写后应用。

我在 SO 中查看了大约十几个类似的问题。但是我无法将答案转换为我的特定需求;我无法找出我错过了什么或我做错了什么。这就是为什么我专门针对我的场景再次询问它的原因。


工作代码:

RewriteCond %{HTTP_HOST} ^laptop.example.com$ [NC]
RewriteRule ^/?$ ?c=1$1 [QSA,L]

希望我不会遇到在此之下的其他重写再次搞砸的情况!

4

1 回答 1

1

您的规则正在重定向,因为您拥有http://https://在您的重写规则目标中的任何内容都隐含 302 重定向。如果您拥有的 2 个主机位于不同的网络服务器或文档根目录上,则需要使用反向代理以使浏览器的地址栏不发生变化。但是看起来(在查看您的实际网站之后)两个主机都在同一台服务器上并共享相同的根目录。所以你只需要摆脱http://www.findbyall.com你的目标:

RewriteCond %{HTTP_HOST} ^laptop.findbyall.com$ [NC]
RewriteRule ^(.*)$ /?c=1$1 [QSA,L]

如果您不希望它匹配所有内容,您可能还想将^(.*)$正则表达式更改为。^/?$

于 2013-01-05T07:03:34.020 回答