2016-03-19 102 views
0

我有一個小問題,我使用htaccess重寫我的網址。它的工作原理一半.. 我在htaccess的使用:當我使用htaccess獲取404錯誤

RewriteRule ^admin$ index.php?page=admin [NC,L] 
RewriteRule ^admin/$ index.php?page=admin [NC,L] 
RewriteRule ^admin/?([a-zA-Z-]+)$ index.php?page=admin&subpage=$1 [NC,L] 
RewriteRule ^admin/?([a-zA-Z-]+)/$ index.php?page=admin&subpage=$1 [NC,L] 
#RewriteRule ^admin/?([a-zA-Z-]+)/?([a-zA-Z-]+)$ index.php?page=admin&subpage=$1&action=$2 [NC,L] 
#RewriteRule ^admin/?([a-zA-Z-]+)/?([a-zA-Z-]+)/$ index.php?page=admin&subpage=$1&action=$2 [NC,L] 
#RewriteRule ^admin/?([a-zA-Z-]+)/?([a-zA-Z-]+)/?([a-zA-Z-]+)$ index.php?page=admin&subpage=$1&action=$2&mode=$3 [NC,L] 
#RewriteRule ^admin/?([a-zA-Z-]+)/?([a-zA-Z-]+)/?([a-zA-Z-]+)/$ index.php?page=admin&subpage=$1&action=$2&mode=$3 [NC,L] 

這工作:

http://example.com/admin/editArticle/ 

但是,當我這樣做,我得到一個404沒有找到..

http://example.com/admin/editArticle/editMode/22 

的控制器具有以下內容:

if ($_GET['page'] == 'admin' && $_GET['subpage'] == 'editArticle' && $_GET['action'] == 'editMode' && !empty($_GET['mode'])) { 
     echo 'Edit mode LOADED!'; 
     die(); 
     //$this->_model->setTemplate('articleEditMode'); 
    } elseif ($_GET['page'] == 'admin' && !empty($_GET['subpage'])) { 
      $this->_model->setTemplate($_GET['subpage']); 
     } 

這是我推送到頁面的按鈕:

<a href="'.BASE_URL.'/admin/editArticle/editMode/'.$row['id'].'/">Edit article</a> 

我該如何得到錯誤? 即使我在索引中做了var_dump。我不能達到它。我總是得到一個404 ..

+0

你不符合任何地方的數字... – hjpotter92

回答

1

嘗試用:

RewriteRule ^admin/?$ index.php?page=admin [NC,L] 
RewriteRule ^admin/([a-zA-Z-]+)/?$ index.php?page=admin&subpage=$1 [NC,L] 
RewriteRule ^admin/([a-zA-Z-]+)/([a-zA-Z-]+)/?$ index.php?page=admin&subpage=$1&action=$2 [NC,L] 
RewriteRule ^admin/([a-zA-Z-]+)/([a-zA-Z-]+)/([a-zA-Z0-9-]+)/?$ index.php?page=admin&subpage=$1&action=$2&mode=$3 [NC,L] 

無需添加一個與/$,一個沒有。您可以使用/?$

+0

感謝您的反應,我不知道,但它不能解決問題。我仍然無法使用動作變量 – Ragehorror