我的htaccess看起来像是
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?module=modelname&action=pagename&reff=$1
我使用index.php作为控制器,使用参数模块和操作
来渲染视图我想重写以下网址 http://example.com/username/splash
并想获得用户名,但是当我打印$ _GET ['reff']时会打印index.php
任何人都可以建议什么是错的?
由于
答案 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]