更多的Mod_rewrite问题

时间:2009-03-10 22:52:27

标签: mod-rewrite

好的,让客户端有来自搜索营销的现有链接。我正在将程序从Cold Fusion迁移到PHP。

RewriteEngine on
RewriteRule ^cat_ap~([^~]+)~(.*)\.htm$ /urban/cat_ap.php?$1=$2 [R]

目前我有一个网址结构:

http://www.test.com/urban/cat_ap~nid~5964.htm

以上重写规则更改为

http://www.test.com/urban/cat_ap.php?nid=5964

现在我希望能够从查询字符串中获取变量,但是将浏览器中的url保持为原始http://www.test.com/urban/cat_ap~nid~5964.htm,但仍然将其转到PHP页面。

因此当有人前往http://www.test.com/urban/cat_ap~nid~5964.htm时,实际上会转到http://www.test.com/urban/cat_ap.php?nid=5964,但仍会显示http://www.test.com/urban/cat_ap~nid~5964.htm

关于如何做到这一点的任何想法?

由于

麦克

3 个答案:

答案 0 :(得分:0)

您已在此行上执行此操作(但将R标志更改为L):

RewriteRule ^/urban/cat_ap~([^~]+)~(.*).htm$ /urban/cat_ap.php?$1=$2 [L]

用户点击的网址仍将显示为.htm版本,而服务器将其显示为.php

答案 1 :(得分:0)

R flag明确诱导外部重定向。所以只需删除R标记。

答案 2 :(得分:0)

我认为您需要设置反向代理以实现所需的行为,并将P标志与重写规则一起使用。我之前使用过这种配置的网站,所以可以说它有效,但我恐怕自己从未配置过: - (

至少第一步是安装mod_proxy并将其加载并运行。 mod_rewrite cookbook page on the P flag在代理RewriteRules上有一些细节,并链接到apache.org上的ProxyPassReverse指令文档。