Mod rewrite 更多Mod_重写问题

Mod rewrite 更多Mod_重写问题,mod-rewrite,Mod Rewrite,好的,有一个客户端有来自searchmarketing的现有链接。我正在将程序从Cold Fusion迁移到PHP RewriteEngine on RewriteRule ^cat_ap~([^~]+)~(.*)\.htm$ /urban/cat_ap.php?$1=$2 [R] 目前我有一个URL结构: http://www.test.com/urban/cat_ap~nid~5964.htm 上面的重写规则更改为哪个 http://www.test.com/urban/cat_ap.p

好的,有一个客户端有来自searchmarketing的现有链接。我正在将程序从Cold Fusion迁移到PHP

RewriteEngine on
RewriteRule ^cat_ap~([^~]+)~(.*)\.htm$ /urban/cat_ap.php?$1=$2 [R]
目前我有一个URL结构:

http://www.test.com/urban/cat_ap~nid~5964.htm
上面的重写规则更改为哪个

http://www.test.com/urban/cat_ap.php?nid=5964
现在,我希望能够从查询字符串中获取变量,但保持浏览器中的url为原始url,但仍将其转到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

有什么办法吗

谢谢


Mike

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


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

显式诱导外部重定向。因此,只需删除
R
标志。

我认为您需要设置反向代理以实现所需的行为,并在重写规则中使用p标志。我以前使用过这种配置的站点,所以可以说它可以工作,但恐怕我自己从未配置过:-(


好的第一步至少是安装mod_proxy并使其加载并运行。有少量关于代理重写规则的详细信息,并链接到apache.org上的ProxyPassReverse指令文档。

R标志将用户重定向到新的URL。此外,我认为原始重写规则中的$1将是变量名的名称,而您修订的重写规则将其设置为一个值
RewriteRule ^/urban/cat_ap~([^~]+)~(.*).htm$ /urban/cat_ap.php?$1=$2 [L]