我有一个主站点上运行ExpressionEngine,我试图让一个名为“工作”的子文件夹运行YOURLS,即:http://foo.com/work/的短网址和EE运行在根,即:http://foo.com/ 。请注意,没有'www'。与ExpressionEngine的.htaccess问题,YOURLS
我遇到的问题是,当我用简短的网址和用户添加“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
一切正常www'来自URI。 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
的/工作/(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
我怎样才能获得的 'www' URI来像非www的URI一样工作,没有完全放弃EE? :)
试图在同一添加2线RewriteBase后'...'根的.htaccess,到'/ work'的.htaccess位置。 (在'RewriteBase..'之后)。 – 2013-03-05 15:47:39
我按照你的说法编辑和添加了这些行,现在它的确重定向了301,但是从http://foo.com/work/123 |我添加的行是RewriteCond%{HTTP_HOST}^www.foo.com $ [NC] RewriteRule ^(。*)$ http:// foo。com/work/$ 1 [L,R = 301] – Marty 2013-03-05 16:04:29
评论中的最后重写规则是不同的('RewriteRule ^(。*)$ foo.com/work/$ 1')。应该完全一样:'RewriteRule ^(。*)$ http://foo.com/$1 [L,R = 301]'。 – 2013-03-05 16:07:12