2016-07-29 54 views
1

我已將我的網站的所有代碼存儲在我的文檔根目錄中mywebfolder。有許多子目錄,例如mywebfolder/deals/..mywebfolder/user/..等。我目前正在通過mydomain.com託管我的網站。Mod_Rewrite最簡單的方法來隱藏所有子目錄的URL中的文件夾

我不想在任何時候顯示mywebfolder,因爲它是多餘的,使我的URL不必要的時間更長,也更難記住。我有一個mod_rewrite運行,完成了這一點,但只有當我去mydomain.com。 (即只適用於文檔根目錄)。在我的000-default.conf文件我有以下幾點:

RewriteEngine On 
    <Directory "/var/www/html"> 
      Options Indexes FollowSymLinks MultiViews 
      AllowOverride All 
      Order allow,deny 
      allow from all 
      AuthType Basic 
      AuthName "Restricted Content" 
      AuthUserFile /etc/apache2/.htpasswd 
      Require valid-user 
      RewriteCond %{HTTP_HOST} ^mydomain\.com$ [OR] 
      RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$ 
      RewriteCond %{REQUEST_URI} !^/mywebfolder/ 
      RewriteRule(.*) /mywebfolder/$1 
    </Directory> 

據我所知,我的條件只能做重寫,當我瀏覽到mydomain.com。無論如何,我可以很容易地推斷這些到整個網站,所以當瀏覽用戶從未在URL中看到/mywebfolder/?或者我必須爲每個目錄創建一個目錄塊?

+0

你的.conf似乎罰款,這是不清楚預期的是行不通的。你能舉出完整的URL地址嗎? –

+0

@DusanBajic這隻適用於當我第一次去我的域名。因此,我導航到www.mydomain.com',它會轉到我的啓動頁面,該頁面位於目錄mydomain.com/mywebfolder/,並正確顯示,而不顯示URL中的myweb文件夾。但是,只要我點擊任何鏈接並進入更深的子文件夾,就會顯示mywebfolder。因此,例如,我點擊了我的初始頁面上的鏈接,它將我帶到mydomain.com/mywebfolder/subdirectory/mypage.php。但我希望它顯示:mydomain.com/subdirectory/mypage.php。有沒有辦法做到這一點?謝謝! – chaseshak

+0

是的,我現在看到它。這是可能的,但讓我先測試它。 –

回答

1

試試這個:

... 
RewriteCond %{HTTP_HOST} ^mydomain\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$ 
RewriteRule /mywebfolder/(.*) /$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^mydomain\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$ 
RewriteCond %{REQUEST_URI} !^/mywebfolder/ 
RewriteRule /(.*) /mywebfolder/$1 
+0

這實際上最終導致我的解決方案..你說我的原始重寫工作正確,雖然這是一個更好的捕獲所有解決方案。我的問題是,網站上的所有符號鏈接都使用了/ mywebfolder /,所以它出現在欄中。如果我直接導​​航到一個鏈接,它會工作。所以我更新了我所有的相關鏈接,現在它似乎正在運行。謝謝你的幫助! – chaseshak

相關問題