2013-07-14 123 views
1

我開發了一個巨大的工具工作室,每個工具在/ tools /文件夾中都有自己的目錄。因此,如果您有一個名爲的工具,例如,則URL將爲/ studio-dir/tools/example /。.htaccess - 隱藏URL中的目錄,同時保留其他文件

我試圖隱藏URL中的/ tools /目錄,同時確保/ tools /目錄之外的其他文件仍然有效。例如,/index.php文件和/ admin /目錄應該保留。

我試過這個,但它只是在一切上造成了大量的404錯誤。我知道這可能是在等待,我會重寫網址。 :P

RewriteCond %{REQUEST_URI} !^/tools/ 
RewriteRule ^/?([^/]+)$ /tools/$1 [L] 

如果你還在困惑,我想:

http://www.example.com/studio/工具/例子/ index.php文件

爲了能夠爲負載:

http://www.example.com/studio/example/index.php

雖然仍然保留/ tools /目錄,並允許/ tools /目錄之外的其他文件加載。

這可能嗎?

回答

3

你需要這樣的事情:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule /studio/(.*) /studio/tools/$1 [L] 
</IfModule> 

的問題是,它不會工作,如果requestet文件既是工作室,文件夾和工具文件夾。

但會有沒有辦法避免這種情況,作爲服務器永遠不能現在如果URL是指到/工作室/工具/或/工作室/

編輯:您可以/工具/自刪除在顯示的網址是這樣的:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule /studio/(.*) /studio/tools/$1 [L] 
    RewriteRule /studio/tools/(.*) /studio/$1 [L,R=302] 
</IfModule> 
+0

不錯!工程奇蹟。如果在網址中找到/還會有強制重定向來移除/ tools /的方法嗎? – Anonymous

+0

請參閱我的編輯。儘管如此,我不確定它是否會導致infinit循環。 –

+1

它不會無限循環。它也沒有重定向,大聲笑。但沒關係,我完全按照您發佈的原始規則工作。 :) – Anonymous

0

在這個例子中沒有404,但它僅適用於只隱藏一個目錄

RewriteEngine On 
RewriteBase/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+dirname/([^\s]+) [NC] 
RewriteRule^%1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule (?!^dirname/)^(.*)$ /dirname/$1 [L,NC] 
相關問題