什麼 htaccess 規則將從 URI(如果包含 404)和內部連結中刪除為網站提供服務的子目錄?

什麼 htaccess 規則將從 URI(如果包含 404)和內部連結中刪除為網站提供服務的子目錄?

**請參閱下面的更新*****

我的主網域網站將從我的伺服器上的一個子目錄提供服務,該子目錄的名稱與網域相同,因此在我的 webroot .htaccess 的這個混亂區塊中閱讀時可能會感到困惑:

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteBase /

  # remove www
  RewriteCond %{HTTP_HOST} ^www\.(.+)$
  RewriteRule ^.*$ %1 [NC,QSA,R=301]

  #RewriteCond %{ENV:REDIRECT_STATUS} . [OR]
  RewriteCond %{HTTP_HOST} ^(www\.)?my\-web\.agency$
  RewriteRule ^my-web.agency/ - [L,R=404]
  RewriteRule !^my-web.agency/ my-web.agency/%{REQUEST_URI} [NC,QSA]
</IfModule>

我已經為此工作了很長時間,改變了規則並建立了我目前要做的事情。

的www。留下來,所以刪除它的那一點是完全無效的。

!^my-web.agency/ 規則確實有效地為網站服務。然而,如果子目錄包含在 URI 中,我接下來嘗試渲染 404 會失敗。

請向我解釋如何解決所有這些問題。我正在嘗試閱讀文件、學習並找出答案,但不知怎的,我只是做不到,而且我已經投入了大量時間,我真的需要停下來,請幫助,我將非常感激學習並仔細記錄。非常感謝。

*****更新:** 現在我有

# remove www, externally for consistent domains (successful)
RewriteCond %{HTTP_HOST} ^www\.(.+)$
RewriteRule .* http://[[percent]]1/$0 [NS,L,R=301,QSA]

RewriteCond %{HTTP_HOST} ^(www\.)?my\-web\.agency$
RewriteCond %{REQUEST_URI} ^my-web.agency
RewriteRule ^(.*)$ - [R=404,L,NC]

RewriteCond %{HTTP_HOST} ^(www\.)?my\-web\.agency$
RewriteCond %{REQUEST_URI} !^my-web.agency
RewriteRule ^(.*)$ /my-web.agency/$1 [L,NC,QSA]

這確實有效地使 www.如果嘗試就會消失。但所有內部連結仍然包括應該隱藏的子目錄(例如,內部連結讀取“http://my-web.agency/my-web.agency/somepage"),並且使用 URI 中的子目錄存取頁面仍然有效;我寧願它返回 404。

DocumentRoot 或 RewriteBase 似乎是合乎邏輯的可能解決方案,只要我能找出正確的實作即可。 ([[percent]]第一個 RewriteRule 中的 http:// 是允許它通過編輯器而不拋出錯誤;只是指示%。)

相關內容