2013-02-18 124 views
0

希望這是一個簡單的網址。我有一個非常基本的.htaccess,將/admin(或/admin/etc)的任何請求重寫爲/_admin/index.php。到目前爲止好:.htaccess重寫所有'其他'網址

#Options All -Indexes 

RewriteEngine On 
RewriteBase /admin 

RewriteRule ^admin/$ /_admin/index.php [QSA] 
RewriteRule ^admin$ /_admin/index.php [QSA] 
RewriteRule ^admin/(.+)$ /_admin/index.php [QSA] 

我也希望是一個通用的「追趕一切」的規則重寫任何其他 URL(/users/turnips//some/other/path等)回/index.php

我似乎無法讓它工作 - 它的server error 500/admin也被重寫到根頁面。我確信我只需要用RewriteCond做些事情,但我無法弄清楚。

謝謝!

+0

嘗試在每個重寫規則之前添加:'RewriteCond%{REQUEST_URI!!index \ .php [NC]',以停止錯誤。 – 2013-02-18 11:11:51

+0

@faa這似乎沒有改變任何東西。只是爲了澄清 - 我列出的.htaccess文件確實很好地工作。我只需要添加一個額外的規則,可以捕獲任何不是'/ admin'的URL:所以'/ users'和其他東西都會被重寫爲站點根目錄中的'/ index.php'(而/ admin /'仍然指向'/ _admin/index.php') – Kai 2013-02-18 11:31:22

回答

1

按照其他規則添加此項。如果以前的規則不適用,這將是默認規則。所有的

RewriteBase/
RewriteCond %{REQUEST_URI} !index\.php [NC] 
RewriteRule .*  index.php  [L,QSA] 
+0

這不會與圖像等其他文件匹配嗎? – kjetilh 2013-02-18 11:51:33

+0

是的,根據這個匹配所有內容:'......其他任何......「在您的評論中。但是,你想在根目錄中重定向到index.php? – 2013-02-18 11:54:17

+0

我沒有問這個問題,我只是懷疑他/她想這樣做,我看到了 – kjetilh 2013-02-18 12:02:19

0

首先,我建議你大號標誌添加到您的重寫所以你一定要避免匹配重寫(除非預期的課程)後,意外的比賽。

第二個WordPress使用以下代碼重寫所有不匹配的URL index.php或者一個已經存在的文件。這樣直接訪問文件,如圖像,文本文件,下載等不會被重寫。請注意,原來它也包括線RewriteCond %{REQUEST_FILENAME} !-d也不能重寫目錄,但你似乎想這種行爲:

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule . /index.php - [L] 

,請查看是否適合您的需要。