我有一個主站點上運行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