我正在开发一个支持多语言的网站。 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?keyword=$1 [NC,QSA,PT]
到
RewriteRule ^promo/([^/]+)/(.*)$ /promo/$2?keyword=$1 [NC,QSA,PT]
等,但它要么加载原始网站,要么显示“找不到页面”错误。我也尝试添加RewriteBase /promo
,但它只是加载了主站点。我怀疑我做了一些明显/愚蠢的错误。感谢。
更新
我应该说,子文件夹中的文件与根文件夹相同,包括.htaccess
文件。有2个.htaccess
个文件,1个在根目录中,1个在子文件夹中。我一直在编辑子文件夹中的那个。
答案 0 :(得分:1)
重要强> 使用.htaccess对于在编辑文件后清除浏览器缓存通常很重要。我遇到了一些问题
您是否尝试将网址重写为文件夹?
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]