我最近將幾個域移動到GoDaddy,並且目前正在努力獲取正確設置每個域的目錄結構。我的每個插件域都位於public_html /下的自己的目錄中。此外,我想將我的主域名移動到其自己的子文件夾中進行清潔。其結果是,我的目錄設置是這樣的:使用CPanel將域移動到子目錄
public_html/
primarydomain/
addondomainA/
addondomainB/
addondomainC/
設置我的.htaccess文件public_html下如下:
RewriteEngine on
# Rewrite direct addondomain access to their proper domains
RedirectMatch ^/addondomainA.com/(.*)$ http://addondomainA.com/$1
RedirectMatch ^/addondomainB.com/(.*)$ http://addondomainB.com/$1
RedirectMatch ^/addondomainC.com/(.*)$ http://addondomainC.com/$1
# Rewrite primary domain access to the primarydomain/ folder
RewriteCond %{HTTP_HOST} ^(www.)?primarydomain.com/
RewriteCond %{REQUEST_URI} !^/primarydomain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /primarydomain/$1
RewriteCond %{HTTP_HOST} ^(www.)?primarydomain.com$
RewriteRule ^(/)?$ primarydomain/index.html [L]
的附加域完全重定向工作,如果我嘗試訪問PRIMARYDOMAIN .com,請求被正確地重寫到primarydomain /子目錄。但是,如果我嘗試訪問primarydomain.com/primarydomain,則無法重寫(據我所知),用戶可以直接訪問該頁面。我想禁止所有對primarydomain /文件夾的直接訪問請求,但我嘗試的任何東西似乎都不起作用。我認爲刪除:
RewriteCond %{REQUEST_URI} !^/primarydomain/
會做些什麼,但它似乎對行爲沒有影響。同樣,兩者:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
...似乎沒有任何影響,如果刪除。我甚至嘗試在頂部添加第四個RedirectMatch子句,希望在插入時捕獲文件夾名稱,但會導致重定向循環,就像它正在按順序處理命令一樣。我已經吞噬了堆棧溢出所能找到的所有答案,但沒有一個能解決問題。我試過多個新的瀏覽器,並且非常確定這不是緩存問題。
有沒有人有任何想法如何完成這個看似超級基本的任務?有什麼我忽略了嗎?提前致謝。