0

我有一个运行 ExpressionEngine 的主站点,我试图让 YOURLS 在一个名为“work”的子文件夹中运行,即:http: //foo.com/work/用于短网址,EE 在根目录下运行,即:http: //foo.com/。请注意没有“www”。

我遇到的问题是,当我使用短 URL 并且用户将“www”添加到 URI 时,例如http://www.foo.com/work/123 ,我得到一个如下所示的重定向链:

如果您从 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 一样工作?:)

4

1 回答 1

0

我遇到了类似的问题。一些最终用户或发布短 url 的人倾向于在它们后面附加 www,而购买短 url 的目的是在没有 www 的情况下使用它。

我还安装了您的重定向索引插件,以将主页访问者转发到我们的常规主页。

所以我有几种不同类型的网址:

  1. 短域名主页,应该指向常规的 https 主页
  2. 短域 YOURLS 管理面板,应该指向 https 管理面板
  3. 短域名缩短网址,应该导致长网址

我希望所有网址都可以使用或不使用 www,并确保将 http 转发到 https。

我的解决方案是从以下几行开始 .htaccess:

# Force HTTPS (because of passwords via /admin) and use clean domain (non www)
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www.examp.le [NC]
RewriteRule ^(.*)$ https://examp.le/$1 [L,R=301]
于 2016-07-08T21:06:35.130 回答