2012-06-27 56 views
1

這是我的場景。我的應用程序的URL都表現出這樣的:用htaccess重定向兩個文件

example.com/index.php/article/whatever/here 

,以移除網址我在的.htaccess把這個和的index.php正常工作:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [L] 

現在,我的問題是,我有包括和admin.php的是這樣的:

example.com/admin.php/manage/whatever/here 

我不知道如何從URL,而不使用的index.php conflics刪除admin.php的,因爲我已經嘗試這樣做,一個500內部服務器錯誤我小號表明:

RewriteRule ^(.*)$ /index.php/$1 [L] 
RewriteRule ^(.*)$ /admin.php/$1 [L] 

編輯

另一個嘗試是此而已,因爲一個404錯誤顯示:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/(.*?)/(.*) /$1/$2 [L] 

ALL我的網址應該有幾個parameteres作爲該電源線:

編輯2:

我已經創建了兩條規則,每條規則獨自運作良好!但兩者不能一起工作:

RewriteRule ^admin/(.*)$ /admin.php/$1 [L] 
RewriteRule ^(.*)$ /index.php/$1 [L] 
+0

..應該如何阿帕奇知道你想要哪一個,如果你送給他一樣正則表達式兩個? (全部並將其添加到..索引和admin.php) – Rufinus

+0

你是對的,但我怎麼能在這裏實現AND條件? – manix

+1

不,你不明白你的查詢是相同的兩個網址..'^(。*)$'如何可以Apache現在如果它的index.php或admin.php? 500error只是說你有多於一次的相同的正則表達式。擴展正則表達式,並將第一個規則的index.php和第二個規則的admin.php包括到正則表達式源中。 – Rufinus

回答

1

嘗試:

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond ${REQUEST_URI} ^admin/(.*)$ [NC] 
RewriteRule ^(.*)$ /admin.php/$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [L] 

那麼至少與測試:

http://www.example.com/some/url 
http://www.example.com/admin/some/url 
你不能
+0

嗨,我已經測試它,並顯示404錯誤:( – manix

+0

更新。pleas測試? –

+0

好吧,現在看起來更好,我的index.php被刪除,網址也可以正常工作,但對於以/ admin/blabla開頭的網址來說,沒有什麼區別..404我認爲我們現在非常接近 – manix

0

您可以稍微修改您的重寫規則以捕獲路徑的第一部分,並在替換中使用它。試試這個:

RewriteRule ^/(.*?)/(.*) /$1/$2 [L] 

基本上()創建一個捕獲組,所以前兩個/之間的任何事情都會被捕捉爲$1和任何後將被捕捉爲$2

注意,你也可以改變你的重寫條件,如果你只是想這個替換應用到index.phpadmin.php

+0

但不會要求他在url中保留索引,管理員和foobar?例如:example.com/index/article/whatever/here或example.com/admin/this –

+0

@sixeightzero是的,它會的。但我不知道應用程序的全部細節和所有可能的路徑。您也可以修改重寫條件以專門檢查要替換的實例。 –

+0

我已經編輯了另一個詳細信息的帖子。但它還沒有工作 – manix