2012-02-23 72 views
0

我正在使用多語言支持的網站。該網址的格式爲:htaccess在多語言網站上顯示主站點而不是子文件夾

https://example.com/gb/en/ 
https://example.com/fr/fr/ 

gb是指國家,en指的是語言。 .htaccess文件處理這些變量並從文件中加載特定於語言的數據。

我想在子文件夾中複製此網站,並使其完全獨立工作到原始網站。

https://example.com/promo/gb/en/ 
https://example.com/promo/fr/fr/ 

.htaccess文件看起來像這樣:

Options +FollowSymlinks 
RewriteEngine on 

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

ErrorDocument 404 /404.php 

#force https 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://example.com/$1 [R,L] 

RewriteRule \.js$ /sprocketize.php [QSA,L,NC] 

RewriteRule ^(admin) - [L,NC] 
RewriteRule ^(app) - [L,NC] 
RewriteRule ^(ws) - [L,NC] 
RewriteRule ^(opia) - [L,NC] 

RewriteRule ^promo-select(/)?$ /promo-select.php [L,NC] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} ^(www.)?example\.com$ [NC] 
RewriteRule ^([a-z]{2})/(.+)/$ http://%{HTTP_HOST}/$1/$2 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-z]{2})/([a-z]{2})(?:/(.*)|)$ /$1/$3?lang=$2 [NC,QSA,PT] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-z]{2})(?:/(.*)|)$ /$2?country=$1 [NC,QSA,PT] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php !-f 
RewriteRule ^([^/]+)/(.*)$ /$2?keyword=$1 [NC,QSA,PT] 

RewriteCond %{REQUEST_URI} !(\.[^./]+)$ 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+)$ /$1.php [NC,QSA] 

我試圖改變

RewriteRule ^([^/]+)/(.*)$ /$2?keyword=$1 [NC,QSA,PT]

RewriteRule ^promo/([^/]+)/(.*)$ /promo/$2?keyword=$1 [NC,QSA,PT]

等,但它要麼加載原始網站或顯示'找不到網頁'的錯誤。我也嘗試加入RewriteBase /promo,但它只是加載主站點。我懷疑我正在做一些明顯/愚蠢的錯誤。謝謝。

UPDATE

我應該說,在子文件夾中的文件是一樣的根文件夾,包括.htaccess文件。有2 .htaccess文件,1個在根目錄中,1個在子文件夾中。我一直在編輯子文件夾中的一個。

+0

我目前得到它的工作作爲http://promo.example.com/gb/en /但這並不理想,因爲它沒有通過SSL。 – gmadd 2012-02-23 12:59:54

回答

1

重要 雖然使用.htaccess編輯文件後清除瀏覽器緩存通常很重要。我遇到過這種問題

您是否嘗試將URL重寫到您的文件夾?

RewriteEngine On 
RewriteBase /promo/ 

通知尾隨「/」,這,我想,應該是在上面

我用這個和它與我的服務器工作...

請試試這個,告訴我們什麼發生: 1.更改

RewriteRule ^promo-select(/)?$ /promo-select.php [L,NC] 

到:

RewriteRule ^promo-select(/)?$ promo-select.php [L,NC] 

如果以上不工作,請嘗試: 變化

RewriteRule ^promo-select(/)?$ /promo-select.php [L,NC] 

到:

RewriteRule ^promo-select(/)?$ /promo/promo-select.php [L,NC] 
+0

謝謝,我已經嘗試將此添加到子文件夾中的htaccess文件,但它沒有區別。我應該說我有2個htaccess文件,1個在根目錄下,1個在子目錄下。我想保留現有網站並在當前地址運行,並在子文件夾中添加一個重複的網站。 – gmadd 2012-02-23 14:22:10

+0

是的。它的結構完全被接受。放置這兩行後清理緩存和訪問URL是什麼輸出? – jribeiro 2012-02-23 14:35:15

+0

隨着這一點,清除緩存並訪問它,它會顯示根站點的主頁。這似乎忽略了'促銷'部分。 – gmadd 2012-02-23 14:47:00