Url Rewrite 的问题

#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

#5 wltony

恩!谢谢 jake

2010-08-31 22:26:46