.htaccess mod_rewrite + $ _GET无效

时间:2011-10-07 00:00:55

标签: apache .htaccess mod-rewrite

我有以下mod_rewrite行(它是.htaccess文件中的唯一行)。当我将第一个名称更改为login以外的名称时,它会起作用,但由于某些原因,当它与实际脚本的名称相同时,无法传递$_GET['initials']。它是否以某种方式覆盖了自己的重写?

RewriteRule ^login/([a-z]{1,5}) login.php?initials=$1 [L]

编辑:

查看$ _SERVER,这是PHP最终加载的页面:

'PHP_SELF' => string '/admin/login.php/abc' (length=19)

其中'abc'是提供的初始值。所以它完全删除了查询字符串并尝试加载该页面,即使/ abc目录不存在,该页面以某种方式加载login.php而不是404;

1 个答案:

答案 0 :(得分:0)

请尝试使用此代码:

RewriteEngine On
RewriteBase /SUBDIRECTORY_NAME_HERE/
RewriteRule ^login/([^/]*)/$ /login.php?initials=$1 [L]

如果在login.php前添加子目录,也可以提供帮助。

RewriteRule ^login/([^/]*)/$ /SUBDIRECTORY_NAME_HERE/login.php?initials=$1 [L]