2011-10-07 100 views
0

我有以下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' 是提供intitials。所以它完全删除查询字符串并尝试加载该页面,该页面以某种方式加载login.php而不是404,即使/ abc目录不存在?

+0

是否添加了$ work? 'RewriteRule^login /([a-z] {1,5})$ login.php?initials = $ 1 [L]'你有'RewriteBase /'set吗? – Benno

+0

没有,但仍然失败..我没有RewriteBase设置,第一次我听说过它.. – Matthew

+0

值得注意的是.htaccess是在一个子目录中,而不是基本的apache目录。 – Matthew

回答

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] 
0

这是在上面的评论,但它并没有真正告诉你该怎么做。 Options -Multiviews Options +FollowSymLinks RewriteEngine On RewriteBase /SUBDIRECTORY_NAME_HERE/ RewriteRule ^login/([^/]*)/$ /login.php?initials=$1 [L]