Mod_rewrite重定向

时间:2013-02-06 14:24:00

标签: mod-rewrite

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

我希望我的假设网站将(几乎)所有流量定向到home.html,这将解析SEO网址。这意味着/ home,/ home.html,/ index.html,/ something / somethingelse / gobledegook都转到home.html(不用担心传递GET变量,主文件将在以后解析整个URL)。 / p>

以下是当前设置:

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

这非常出色。除了它作为重定向:浏览器中的URL变为“/home.html”。如何加载home.html页面但保持URL相同?

3 个答案:

答案 0 :(得分:3)

我认为您应该尝试用此替换您的规则:

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

请注意,“空白网址路径”测试现在已在规则中完成,因此不需要原始的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模式中添加前导斜杠。

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

答案 1 :(得分:2)

简单,使用passthrough (PT) flag

RewriteRule ^(.*)$ /home.html [PT,L]

答案 2 :(得分:1)

您应该只需将P标记添加到RewriteRule即可。请参阅:Apache mod_rewrite Manual

    RewriteRule ^(.*)$ /home.html [PL]