3

我想我终于弄清楚了 mod_rewrite 的基础知识,但我仍然遇到了一些麻烦。

我希望我的假设站点将(几乎)所有流量引导到 home.html,它将解析 SEO URL。这意味着 /home、/home.html、/index.html、/something/somethingelse/gobledegook 都转到 home.html(不用担心传递 GET 变量,home 文件稍后会解析整个 URL)。

这是当前的设置:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !/something/I/want/to/preserve.html
RewriteRule ^(.*)$ /home.html [L]

这非常有效。除非它用作重定向:浏览器中的 URL 变为“/home.html”。如何加载 home.html 页面但保持 URL 不变?

4

3 回答 3

2

很简单,使用直通(PT)标志

RewriteRule ^(.*)$ /home.html [PT,L]
于 2013-02-06T14:38:06.783 回答
1

我认为你应该尝试用这个替换你的规则:

RewriteCond %{HTTP_HOST} =www.staging.example.com
RewriteRule ^$ /abc-sp.html [PT,L]

请注意,现在在规则中完成了“空白 URL 路径”测试,因此不需要原始的 RewriteCond。

[PT] 告诉 mod_rewrite 将输出保留为“URL 格式”,而不是将其转换为文件路径。因此,重写后的 URL 请求可以被 mod_proxy 拾取并发送到您的后端。

如果它不起作用,则使用 [P] 标志而不是 [PT],并指定后端资源的URL,例如“http://192.168.0.2:8080/abc-sp.jsp”。[P] 标志将生成反向代理吞吐量,就像您可能存在的配置文件 mod_alias 代码一样。

请注意,上面的代码用于 .htaccess 或用于容器内的配置文件。如果在任何容器或 .htaccess 之外使用,请在 RewriteRule 模式中添加一个前导斜杠。

希望我的回答有帮助!:~)

于 2013-02-06T14:35:06.720 回答
1

您应该能够简单地将P标志添加到您的RewriteRule. 请参阅:Apache mod_rewrite 手册

    RewriteRule ^(.*)$ /home.html [PL]
于 2013-02-06T14:40:28.043 回答