2011-10-07 97 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]