2010-07-13 86 views
1

我想使用mod_rewrite將所有頂級目錄重定向到一個文件。mod_rewrite:將頂級目錄重定向到一個文件

所以下面應該有重定向:

- http://example.com/test 
- http://example.com/test8/ 
- http://example.com/test_9231/ 

下應該不會重定向有:

- http://example.com/test.php 
- http://example.com/test_9231/test/ 
- http://example.com/test/test.php 
- http://example.com/test_9231/test 

的目錄中沒有將實際存在。目錄名稱將只包含這些字符:A-Za-z0-9_-

我試過這個RewriteRule /(.*) /index.php [L]但子目錄仍然重定向。
我認爲在第二個括號之後加上一個斜槓就可以完成這項工作,但它只是打破了重定向。

回答

2
RewriteRule ^/[A-Za-z0-9_-]+/?$ /index.php 

這將匹配一個斜線,然後根據你的天賦,那麼另一個可選的斜槓的名稱,然後字符串的結尾,所以子目錄不匹配

+0

去時,我得到錯誤404 http://example.com/test/ – 2010-07-14 01:09:11

+0

你在.htaccess中做這個嗎?你有其他的重寫規則嗎? – unbeli 2010-07-14 06:37:19

+0

是的,在.htaccess中。我確實有其他的規則,但是我沒有測試你的代碼,我得到了相同的結果。 – 2010-07-14 10:38:32

0
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^/?[^/]+/?$ /index.php [L] 
+0

一切都很好,除了http://example.com/test.php也重定向 – 2010-07-14 01:10:18

+0

是的,沒有打擾趕上'。',因爲我認爲文件將存在或者你想創建一個在PHP本身很好的404頁面(我會,沒有人會幫助通用404的,有一個很好的頁面提示和/或搜索形式將是更好的恕我直言)。但這不是問題,所以確實不符合法案。 – Wrikken 2010-07-14 17:19:27

相關問題