2014-01-20 18 views
0

我有一個.htaccess重定向的問題,並希望有人可以幫助我(我試了1,5個小時...)。htaccess - 子文件夾重定向不工作

我想要做什麼:
1)重定向到mydomain.com/en/ mydomain.com(隱藏文件夾)
2)還在用的子文件夾mydomain.com/fr/或mydomain.com/es正常

我htaccess文件(位於主文件夾,而不是()在/ EN /!):

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^en/ 
RewriteRule ^(.*)$ en/$1 [L] 

作用:
1)工作原理:從重定向到mydomain.com/en/ mydomain.com的作品
2 )問題:當我進入mydomain.com/fr/它重定向到mydomain.com/en/fr/

問題:
我怎樣才能得到這個重定向到/ EN /文件夾中唯一的工作,而不是在其他文件夾?
因此,mydomain.com/fr/會保持mydomain.com/fr/?

非常感謝您的幫助!

回答

0

嘗試增加其他檢查:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^en/ 
RewriteRule ^(.*)$ en/$1 [L] 

RewriteCond %{DOCUMENT_ROOT}/en%{REQUEST_URI} -f [OR] 
RewriteCond %{DOCUMENT_ROOT}/en%{REQUEST_URI} -d 
RewriteCond %{REQUEST_URI} !^en/ 
RewriteRule ^(.*)$ en/$1 [L] 

要刪除的文件夾:

RewriteCond %{THE_REQUEST} \ /+en/([^\ \?]*) 
RewriteRule^/%1 [L,R] 
+0

不幸的是,這兩個選項不起作用。他們不隱藏該文件夾,因此它停留在mydomain.com/en/(如同htaccess中沒有任何內容)。 – Student

+0

@Student這隻會重寫前面沒有'/ en /'的URL。 「模式」是'^(。*)$'(任何),而規則的**目標**是「/ en /(任何)」。沒有規則來重定向像'/ en/something'這樣的URL到'/ something',這是完全不同的,並且是外部的 –

+0

我不明白它應該如何工作。我想根據他們的國家IP將用戶重定向到語言版本。因此,來自法國的用戶在進入mydomain.com時會被重定向到mydomain.com/fr/(這是通過Maxmind的Javascript API完成的,並且工作正常)。我不想(!)想要發生的唯一事情是講英語的用戶轉到mydomain.com/en。相反,URL應該只是mydomain.com。當我添加兩行代碼時,您將刪除文件夾,我得到一個永無止境的循環,因爲它使用主目錄中的文件而不是子文件夾/ en中的文件。 – Student