2010-02-21 149 views
3

我希望mod_rewrite將所有請求重定向到不存在的文件和文件夾,並將所有對主文件夾(「root」)的請求重定向到子文件夾。所以,我把它像這樣:.htaccess將根重定向到子文件夾

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f [NC] 
RewriteCond %{REQUEST_FILENAME} !-d [NC,OR] 
RewriteCond %{REQUEST_URI}/[NC] 
RewriteRule ^(.*)$ /my/subfolder/$1 [L,QSA] 

不幸的是,這是行不通的:如果我要求example.com/public/它重定向到我的處理腳本(所以重定向到我/子文件夾/ index.php文件?app = public),儘管文件夾「public」存在。 請注意,請求domain.com/正確地重定向到我的/子文件夾/ index.php

爲什麼?

回答

7

它不起作用,因爲你的最後一個條件不僅僅是匹配根目錄,而是任何擁有它的uri,這基本上是一切。而不是嘗試以下操作:

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d [OR] 
RewriteCond %{REQUEST_URI} ^/$ 
RewriteRule ^(.*)$ /my/subfolder/$1 [L,QSA] 

注意,不需要[NC]你是不是想匹配任何字母,所以是不是真的需要「任何情況下」。

希望它有幫助。

+0

你可以看看http://stackoverflow.com/questions/17937873/how-to-remove-a-subdirectory-from-the-url-when-forwarding-to-sudirectory? – Starx 2013-07-30 07:06:32

相關問題