#1 wltony
由于需要支持 iis 所以只能使用isapi!
现在的问题是 访问网站的页面都是显示首页,查了rewrite的日志记录,
比如
http://127.0.0.1/sell-index.html rewrite 后的地址是 /index.php?sell-index.html
应该返回什么样的地址才正确???
使用的是IIRF 2.0
规则如下
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(.*)$ /index.php?$1 [L]
2010-08-31 18:42:54
#2 jake
这个urlrewrite的设置就已经对了,下面你还需要在你的应用程序里面配置一下才行。
http://code.google.com/p/speedphp/source/browse/trunk/Extensions/spUrlRewrite.php 本扩展要求SpeedPHP框架2.5版本以上,以支持对spUrl函数的挂靠程序。
应用程序配置中需要使用到路由挂靠点以及spUrl挂靠点
'launch' => array(
'router_prefilter' => array(
array('spUrlRewrite', 'setReWrite'),
),
'function_url' => array(
array("spUrlRewrite", "getReWrite"),
),
),
对spUrlRewrite的配置
'ext' => array(
'spUrlRewrite' => array(
'suffix' => '.html', // 生成地址的结尾符,网址后缀
'sep' => '/', // 网址参数分隔符,建议是“-_/”之一
'map' => array( // 网址映射,比如 'search' => 'main@search',
// 将使得
http://www.example.com/search.html 转向控制器main/动作serach执行
// 特例 '@' => 'main@no' 如果映射是@,将使得符合以下条件的网址转向到 控制器main/动作no执行:
// 1. 在map中无法找到其他映射,2. 网址第一个参数并非控制器名称。
),
'args' => array( // 网址映射附加的隐藏参数,如果针对某个网址映射设置了隐藏参数,则在网址中仅会存在参数值,而参数名称被隐藏。
// 比如 'search' => array('q','page'), 那么生成的网址将会是:
//
http://www.example.com/search-thekey-2.html // 配合map映射'search' => 'main@search',这个网址将会执行 控制器main/动作serach,
// 而参数q将等于thekey,参数page将等于2
),
),
),
2010-08-31 20:35:52
#3 wltony
仔细查了 IIRF 的 手册 ,原来他的规则有点不一样,需要 一个 [U,L]
不过这个iis rewrite的免费的,
http://iirf.codeplex.com/ 有英文手册
U = Store original url in server Variable HTTP_X_REWRITE_URL(保存原始的url到HTTP_X_REWRITE_URL服务器变量中)
2010-08-31 22:13:32
#4 jake
spUrlRewrite.php这里也对HTTP_X_REWRITE_URL进行了兼容,见文件80行。
2010-08-31 22:20:20