2013-04-25 100 views
2

文件夾結構:如何使用.htaccess將文件夾重定向到index.php?

/index/ 
/upload/ 
/something/ 

這些文件夾沒有在他們的.htaccess(也不應該)。

當訪問http://site.com/something它重定向到http://site.com/something/url=something,這是不希望的。

RewriteEngine on 

# RewriteBase /base/ # 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] 

添加另一重寫條件在文件夾的末端附加「/」,使附加的(和不必要的)請求,也不是很好。

如何編寫規則,以便即使文件夾直接發送到前端控制器也沒有任何不需要的重定向?

+0

在根.htaccess中 – Radu 2013-04-25 08:55:49

+0

爲什麼有'RewriteBase/base /'如果它在根中? – 2013-04-25 08:56:31

+0

完整的路徑是這樣的** www.site.com/base/something **,base是在該站點內運行的應用程序之一。 – Radu 2013-04-25 09:06:21

回答

0

嘗試增加一個附加條件爲排除現有目錄:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] 
+0

如果我使用這個,當我去** www.site.com/something **時,它會將我重定向到** www.site.com/something /?url = something **。我希望重寫引擎將虛擬路徑視爲現有文件夾。 – Radu 2013-04-25 09:03:10

0

的溶液將是。

RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^(.*[^/])$ $1/ [NC,L,R=301] 

但是,這使得額外的重定向(首先到/和另一個index.php?url ...)...不是最佳。

一個好的解決方案是隻有一個重定向,不管是什麼。

相關問題