我想我终于找到了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相同?
答案 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]