我有一个运行 ExpressionEngine 的主站点,我试图让 YOURLS 在一个名为“work”的子文件夹中运行,即:http: //foo.com/work/用于短网址,EE 在根目录下运行,即:http: //foo.com/。请注意没有“www”。
我遇到的问题是,当我使用短 URL 并且用户将“www”添加到 URI 时,例如http://www.foo.com/work/123 ,我得到一个如下所示的重定向链:
- http://www.foo.com/work/123 302 重定向到
- http://www.foo.com/work 301 重定向到
- http://www.foo.com/work/返回 200
如果您从 URI 中省略“www”,则一切正常。YOURLS 设置为使用非 www,但令人担忧的是,有些用户可能会习惯性地键入“www”,因为这些 URI 被放置在印刷广告上。
根 .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/ (YOURLS) .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 一样工作?:)