2013-03-05 111 views
0

我有一個主站點上運行ExpressionEngine,我試圖讓一個名爲「工作」的子文件夾運行YOURLS,即:http://foo.com/work/的短網址和EE運行在根,即:http://foo.com/ 。請注意,沒有'www'。與ExpressionEngine的.htaccess問題,YOURLS

我遇到的問題是,當我用簡短的網址和用戶添加「WWW」的URI,如http://www.foo.com/work/123我得到的是這樣的一個重定向鏈:

一切正常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? :)

+1

試圖在同一添加2線RewriteBase後'...'根的.htaccess,到'/ work'的.htaccess位置。 (在'RewriteBase..'之後)。 – 2013-03-05 15:47:39

+0

我按照你的說法編輯和添加了這些行,現在它的確重定向了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

+1

評論中的最後重寫規則是不同的('RewriteRule ^(。*)$ foo.com/work/$ 1')。應該完全一樣:'RewriteRule ^(。*)$ http://foo.com/$1 [L,R = 301]'。 – 2013-03-05 16:07:12

回答

0

嘗試在根目錄的.htaccess RewriteBase...後加入2號線,到/work的.htaccess,像這樣:

# BEGIN YOURLS 
<IfModule mod_rewrite.c> 
RewriteEngine On 

RewriteCond %{HTTP_HOST} ^www.foo.com [NC] 
RewriteRule ^(.*)$ http://foo.com/$1 [L,R=301] 

RewriteBase /work/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /work/yourls-loader.php [L] 
</IfModule> 
# END YOURLS 
0

我遇到了類似的問題。一些最終用戶或發佈短網址的用戶傾向於使用www附加它們,而短網址是爲了在沒有www的情況下使用而購買的。

我還安裝了YOURLS redirect index plugin將主頁訪問者轉發到我們的常規主頁。

所以我有幾個不同類型的網址:

  1. 簡短的域名的主頁,應該引起普通HTTPS網頁
  2. 簡短的域名YOURLS管理面板,應該引起HTTPS管理面板
  3. 短域名縮短的網址,應導致長URL

我希望所有的URL都可以使用或不使用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]