ExpressionEngine を実行しているプライマリ サイトがあり、YOURLS を「work」というサブフォルダーで実行しようとしています。つまり 、短い URL の場合はhttp://foo.com/work/であり、EE はルートで実行されています。つまり、http: //foo.com/。「www」がないことに注意してください。
私が抱えている問題は、短い URL を使用し、ユーザーがhttp://www.foo.com/work/123などの URI に「www」を追加すると、次のようなリダイレクト チェーンが得られることです。
- http://www.foo.com/work/123 302 リダイレクト先
- http://www.foo.com/work 301 リダイレクト先
- 200 を返すhttp://www.foo.com/work/
URI から「www」を省略しても、すべて正常に機能します。YOURLS は非 www を使用するように設定されていますが、これらの URI が印刷広告に配置されているため、一部のユーザーが習慣的に「www」を入力する可能性があるという懸念があります。
ルート .htaccess ファイルは次のようになります。
SetOutputFilter DEFLATE
DirectoryIndex index.php index.html
# BEGIN ExpressionEngine Rewrite
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.foo.com [NC]
RewriteRule ^(.*)$ http://foo.com/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteRule ^(.*)$ /index.php?$1 [NC,L]
</IfModule>
# END ExpressionEngine Rewrite
/work/ (YURLS) .htaccess は次のようになります。
# BEGIN YOURLS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /work/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /work/yourls-loader.php [L]
</IfModule>
# END YOURLS
EE を完全にホース化せずに、「www」URI を非 www URI のように機能させるにはどうすればよいですか? :)