У меня есть мой сайт разбит на несколько папок по языку:.htaccess переписать в папку языков по умолчанию?
/
/en/
index.php
about-us.php
faq.php
...
/fr/
index.php
about-us.php
faq.php
...
...
etc.
Я хотел бы иметь правила перезаписи, автоматически перезаписывает в папку en
, если кто-то пытался войти mydomain.com/about-us.php
.
FYI, у меня также есть правило перезаписи, которое удаляет расширение, поэтому я действительно хочу, чтобы mydomain.com/about-us
переписывал mydomain.com/en/about-us
. Вот мое существующее правило перезаписи, которое делает следующее:
# allows for extension-agnostic urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
Это имеет смысл? Кто-нибудь поможет мне здесь?
EDIT:
@Gumbo -
Вот что мой .htaccess
файл выглядит следующим образом (это все, что в нем):
RewriteEngine On
# defaults to the english site
RewriteRule !^[a-z]{2}/ /en%{REQUEST_URI} [L,R=301]
# allows for extension-agnostic urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
Этот файл находится в корневом каталоге моего сайта (не в языковой папке). Я перезарядил свой веб-сервер, просто чтобы быть на безопасной стороне, и я все еще получаю сообщение об ошибке при попытке перейти к mydomain.com/about-us
:
Not Found
The requested URL /about-us was not found on this server.
... где mydomain.com/en/about-us
работает просто отлично.
Другие мысли?
В 'директивы RewriteCond' принадлежат к' RewriteRule' ранее имели и не новый. Поэтому вам нужно расположить директивы как «RewriteRule ... RewriteCond ... RewriteCond ... RewriteRule», где первым «RewriteRule» является мое правило, а остальное - ваше исходное правило. – Gumbo
Хорошо, я изменил его, но у меня такая же ошибка. Казалось, это не имело никакого значения. – neezer
(отредактированная запись выше, чтобы отразить новый порядок правил) – neezer