我在使子目錄充當我的主網域的 public_html 時遇到問題,並獲得也適用於該網域子目錄的解決方案。
我的託管允許我託管多個站點,這些站點都運作良好。我在我的目錄下建立了一個子資料夾〜/ public_html /名為的目錄/域名/,我在其中為每個單獨的網站創建一個資料夾。例如
- 公共_html
- 域
- 網站一
- 網站二
- 網站三
- …
- 域
這使我的網站保持美觀和整潔。唯一的問題是讓我的「主域」適應這個系統。看來我的主網域以某種方式與我的帳戶(或 Apache 或其他東西)相關聯,所以我無法更改該網域的「文檔根」。我可以定義我在 cPanel 中新增的任何其他網域(「附加網域」)的文檔根,沒有問題。但主域不同。
我被告知要編輯 .htaccess 文件,將主域重定向到子目錄。這似乎效果很好,我的網站在其主頁/索引頁面上運作良好。
我遇到的問題是,如果我嘗試導航瀏覽器以說出我的主網站的圖像資料夾(僅作為範例),如下所示:
www.yourmaindomain.com/images/
然後它似乎忽略了重定向並在 url 中顯示整個伺服器目錄,如下所示:
www.yourmaindomain.com/domains/yourmaindomain/images/
它實際上仍然顯示正確的“/圖像索引”頁面,並顯示我所有圖像的清單。
這是我正在使用的 .htaccess 檔案的範例:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
RewriteCond %{REQUEST_URI} !^/domains/yourmaindomain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domains/yourmaindomain/$1
RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
RewriteRule ^(/)?$ domains/yourmaindomain/index.html [L]
這個 htaccess 檔案看起來正確嗎?我只需要讓我的主域表現得像一個插件域,並且它的子目錄遵守重定向規則。
答案1
我會打電話給流氓DirectorySlash
。
- 只發生在目錄中嗎?
- 它是否僅在沒有尾部斜線時發生(即
/images
轉到/domain/yourdomain/images/
,但/images/
沒問題)?
在這種情況下,有 3 個選擇:
- 確保所有連結都有尾部斜線 (
/
) - 設定
DirectorySlash off
(會讓你進入雙頁/目錄,從 SEO 的角度來看這不是一個好的)。 RewriteRule
嘗試在最後一個之前添加 aindex.html
:(臨時想到的,不知道它是否會起作用)RewriteCond %{REQUEST_FILENAME} -d RewriteCond %{REQUEST_FILENAME} !/$ RewriteRule ^(.*) $1/
答案2
你的問題之一是你的正規表示式:你是不是逃離你的點。這意味著它將被視為“任何字元”而不僅僅是一個點。代替
^(www.)?domain.tld$
你需要有
^(www\.)?domain\.tld$