2012-08-07 36 views
0

应用程序所在的位置:http://localhost/reports/的.htaccess规则,如果文件不重定向存在

  • 报告
    • 的index.php
    • daily_stats.php
    • 控制器
      • daily_stats.php //是一个具有br()作为动作的控制器

我想写的.htaccess规则为每FOLL情况:

case1: http://localhost/reports/daily_stats/ 
      resulting url: http://localhost/reports/daily_stats.php 

case2: http://localhost/reports/daily_stats/br/ 
      resulting url: http://localhost/reports/index.php/daily_stats/br 

其中的index.php采取路由在乎位指示

我已经写了FOLL :

​​

面临问题是当我输入http://localhost/reports/daily_stats/br/它在根文件夹,而所述控制器

执行daily_stats.php当看到这样的服务器可变其:

[SCRIPT_FILENAME] => /var/www/reports/daily_stats.php 
[QUERY_STRING] => 
[REQUEST_URI] => /reports/daily_stats/br 
[SCRIPT_NAME] => /reports/daily_stats.php 
[PATH_INFO] => /br 
[PATH_TRANSLATED] => /var/www/br 
[PHP_SELF] => /reports/daily_stats.php/br 

应该HV是这样的: [SCRIPT_FILENAME] => /无功/网络/reports/index.php [QUERY_STRING] => [REQUEST_URI] => /报告/ daily_stats/BR [SCRIPT_NAME] => /reports/index.php [PATH_INFO] =>/daily_stats/BR [PATH_TRANSLATED] =>/var/www/daily_stats/br [PHP_SELF] => /reports/index.php/daily_stats/br

重写日志说:

127.0.0.1 - - [07/Aug/2012:15:22:30 +051800] [localhost/sid#b63fead8][rid#b6ae6058/subreq] (3) [perdir /var/www/reports/] add path info postfix: /var/www/reports/daily_stats.php -> /var/www/reports/daily_stats.php/br 
127.0.0.1 - - [07/Aug/2012:15:22:30 +051800] [localhost/sid#b63fead8][rid#b6ae6058/subreq] (3) [perdir /var/www/reports/] strip per-dir prefix: /var/www/reports/daily_stats.php/br -> daily_stats.php/br 
127.0.0.1 - - [07/Aug/2012:15:22:30 +051800] [localhost/sid#b63fead8][rid#b6ae6058/subreq] (3) [perdir /var/www/reports/] applying pattern '^(.*)$' to uri 'daily_stats.php/br' 
127.0.0.1 - - [07/Aug/2012:15:22:30 +051800] [localhost/sid#b63fead8][rid#b6ae6058/subreq] (4) [perdir /var/www/reports/] RewriteCond: input='/var/www/reports/daily_stats.php' pattern='!-f' => not-matched 
127.0.0.1 - - [07/Aug/2012:15:22:30 +051800] [localhost/sid#b63fead8][rid#b6ae6058/subreq] (1) [perdir /var/www/reports/] pass through /var/www/reports/daily_stats.php 
127.0.0.1 - - [07/Aug/2012:15:22:30 +051800] [localhost/sid#b63fead8][rid#b6af0058/initial] (3) [perdir /var/www/reports/] add path info postfix: /var/www/reports/daily_stats.php -> /var/www/reports/daily_stats.php/br 
127.0.0.1 - - [07/Aug/2012:15:22:30 +051800] [localhost/sid#b63fead8][rid#b6af0058/initial] (3) [perdir /var/www/reports/] strip per-dir prefix: /var/www/reports/daily_stats.php/br -> daily_stats.php/br 
127.0.0.1 - - [07/Aug/2012:15:22:30 +051800] [localhost/sid#b63fead8][rid#b6af0058/initial] (3) [perdir /var/www/reports/] applying pattern '^(.*)$' to uri 'daily_stats.php/br' 
127.0.0.1 - - [07/Aug/2012:15:22:30 +051800] [localhost/sid#b63fead8][rid#b6af0058/initial] (4) [perdir /var/www/reports/] RewriteCond: input='/var/www/reports/daily_stats.php' pattern='!-f' => not-matched 
127.0.0.1 - - [07/Aug/2012:15:22:30 +051800] [localhost/sid#b63fead8][rid#b6af0058/initial] (1) [perdir /var/www/reports/] pass through /var/www/reports/daily_stats.php 
+1

这应该引领你在正确的道路上:http://stackoverflow.com/questions/667284/htaccess-redirect-if-file-doesnt-exist – Eypeon 2012-08-07 07:31:25

+1

这有什么错'的ErrorDocument 404/404.php'? – Peon 2012-08-07 07:32:22

+0

你是否启用了重新写入日志,如果有的话,它说什么? – Waygood 2012-08-07 08:11:29

回答

0

这听起来像你已经写了Case1的规则......但是你需要从应用阻止规则时的URL不会在“daily_stats”结束。为此,只需在匹配字符串的末尾添加$即可。像这样的东西应该工作:

RewriteRule ^reports/daily_stats/?$ /reports/daily_stats.php