.htaccess htaccess在多语言站点上显示主站点而不是子文件夹

.htaccess htaccess在多语言站点上显示主站点而不是子文件夹,.htaccess,multilingual,.htaccess,Multilingual,我在一个支持多种语言的网站上工作。URL的格式如下: 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文件如下所示: Opt

我在一个支持多种语言的网站上工作。URL的格式如下:

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?关键字=$1[NC、QSA、PT]

重写规则^promo/([^/]+)/(.*)$/promo/$2?关键字=$1[NC、QSA、PT]

等等,但它要么加载原始站点,要么显示“未找到页面”错误。我也尝试过添加
RewriteBase/promo
,但它只是加载了主站点。我怀疑我做错了什么明显的/愚蠢的事。谢谢

更新

我应该说,子文件夹中的文件与根文件夹相同,包括
.htaccess
文件。有2个
.htaccess
文件,1个在根目录中,1个在子文件夹中。我一直在编辑子文件夹中的文件。

重要 使用.htaccess时,编辑文件后清除浏览器缓存通常很重要。我在这方面遇到了一些问题

您是否尝试将URL重写到您的文件夹

RewriteEngine On
RewriteBase /promo/
注意尾随的“/”,我认为这个应该在顶部

我使用这个,它与我的服务器一起工作

请尝试一下,并告诉我们发生了什么: 1.改变

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

如果上述方法无效,请尝试: 改变

致:


目前,我已将其作为工作状态,但这并不理想,因为它不通过SSL。谢谢,我已尝试将其添加到子文件夹中的htaccess文件中,但没有任何区别。我应该说我有两个htaccess文件,一个在根目录中,一个在子文件夹中。我想保持现有站点在其当前地址上运行,并在子文件夹中添加一个重复站点。是。这种结构是完全可以接受的。放置这两行,清理缓存并访问url后,输出是什么?当这两行就绪,清除缓存并访问它时,它显示根站点的主页。它似乎忽略了“promo”部分。就是这样:-)保留
RewriteBase/promo/
并从
promo-select.php
中删除起始斜杠已经修复了它,非常感谢。
RewriteRule ^promo-select(/)?$ /promo-select.php [L,NC]
RewriteRule ^promo-select(/)?$ /promo/promo-select.php [L,NC]