2017-03-01 84 views
0

我有以下htaccess文件:htaccess的重寫兩個子目錄根

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$ 
RewriteCond %{REQUEST_URI} !^/site/v1/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /site/v1/$1 
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$ 
RewriteRule ^(/)?$ site/v1/ [L] 

所以,當我訪問這兩個domain.comwww.domain.com,我直接去domain.com/site/v1,沒有/site/v1部分顯示在瀏覽器上。

但我的問題是,site/v1文件夾內,有一個admin文件夾,包含該網站的CMS,當我訪問domain.com/admin,它重定向到domain.com/site/v1/admin,與被顯示在瀏覽器中/site/v1部分。

所以,我的問題是,如何在不顯示所有路徑的情況下訪問/site/v1/admin文件夾,即當我訪問domain.com/admin時,它訪問子文件夾但不顯示它?

在其他格式的,我有:
- 我訪問domain.com/about
- 在服務器端,我在domain.com/site/v1/about
其實是 - 在我的瀏覽器我看到domain.com/about
- PS:about這裏是一個參數通過RewriteCond指令傳遞給我的後端(在另一段代碼),不是一個文件夾(但它的作品一樣好與文件夾)

什麼我也有:
- 我訪問domain.com/admin
- 在服務器端,我其實是在domain.com/site/v1/admin
- 在我的瀏覽器我看到domain.com/site/v1/admin

我想要什麼:
- 之前的最後一個項目是「我看到domain.com/admin

謝謝!

編輯

這裏的變化後,我完全htaccess文件:

# force ssl 
RewriteEngine on 
RewriteCond  %{SERVER_PORT} ^80$ 
RewriteRule  ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R] 

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$ 
RewriteCond %{REQUEST_URI} !^/site/v1/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /site/v1/$1 
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$ 
RewriteRule ^admin/$ /site/v1/admin/ [L] 
RewriteRule ^(/)?$ site/v1/ [L] 

回答

0

一個簡單的方法來重寫基本URL是對我們這樣的重寫規則。

RewriteRule ^$ /site/v1/ [L] 

解決您的管理目錄的問題,只需添加像這樣:

RewriteRule ^admin/$ /site/v1/admin/ [L] 
+0

謝謝您的回答其他規則,但它仍然無法正常工作,它的行爲是相同的(我試過清理緩存,不同的瀏覽器和電腦 - 只是爲了確保)。 我用我的完整htaccess文件編輯我的文章。 – LVilasBoas

+0

你在用什麼CMS? – GeekBrett

+0

我自己開發了它 – LVilasBoas