我有以下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;
答案 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]