![どのような htaccess ルールが、URI (404 が含まれている場合) および内部リンクからサイトを提供するサブディレクトリを削除しますか?](https://rvso.com/image/1558054/%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%20htaccess%20%E3%83%AB%E3%83%BC%E3%83%AB%E3%81%8C%E3%80%81URI%20(404%20%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E5%A0%B4%E5%90%88)%20%E3%81%8A%E3%82%88%E3%81%B3%E5%86%85%E9%83%A8%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%8B%E3%82%89%E3%82%B5%E3%82%A4%E3%83%88%E3%82%92%E6%8F%90%E4%BE%9B%E3%81%99%E3%82%8B%E3%82%B5%E3%83%96%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%82%92%E5%89%8A%E9%99%A4%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
**下記のアップデートをご覧ください*****
私のプライマリ ドメイン サイトは、ドメインと同じ名前のサーバー上のサブディレクトリから提供されるため、Web ルート .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/ ルールは確かに Web サイトを効果的に提供します。ただし、サブディレクトリが 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:// は、エラーをスローせずにエディターを通過できるようにするためのもので、単に を示します%
。)