htaccess没有返回所需的值

时间:2014-09-04 12:15:01

标签: php apache .htaccess mod-rewrite

我的htaccess看起来像是

RewriteRule ^([^/]+)/([^/]+)/?$ index.php?module=modelname&action=pagename&reff=$1

我使用index.php作为控制器,使用参数模块和操作

来渲染视图

我想重写以下网址 http://example.com/username/splash

并想获得用户名,但是当我打印$ _GET ['reff']时会打印index.php

任何人都可以建议什么是错的?

由于

1 个答案:

答案 0 :(得分:1)

您看到$_GET['reff']=index.php,因为您的重写规则已运行两次。首先在/username/splash URI上,然后第二次在/index.php URI上。这是因为您的URI模式^([^/]+)/([^/]+)/?$与两个URI匹配。

要防止这种不受欢迎的行为,您需要遵守以下规则:

# if request is not for a file
RewriteCond %{REQUEST_FILENAME} !-d
# if request is not for a directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?module=modelname&action=pagename&reff=$1 [L,QSA]