htaccess, показывающий основной сайт вместо подпапки на многоязычном сайте - PullRequest
0 голосов
/ 23 февраля 2012

Я работаю над сайтом с многоязычной поддержкой. 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, но он только что загрузил основной сайт. Я подозреваю, что делаю что-то очевидное / глупое неправильно. Спасибо.

UPDATE

Я должен был сказать, что файлы в подпапке совпадают с корневой папкой, включая файл .htaccess. Есть 2 .htaccess файла, 1 в корне, 1 в подпапке. Я редактировал один в подпапке.

1 Ответ

1 голос
/ 23 февраля 2012

Важно При работе с .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]
...