Я пытаюсь скрыть подкаталог с URL-адресом с .htaccess. У меня есть PHP-скрипт, который выполняется каждый раз, когда клиент входит в веб-сайт. Это index.php
в корневом каталоге Apache. Этот скрипт определяет язык для использования на веб-сайте и перенаправляет его в целевой каталог. Английский - это мой язык по умолчанию, так что мне нужен «en» каталог должен быть скрыт в URL-адресе и в то же время перенаправить все URL-запросы из корневого каталога в «en» папку, чтобы они не отображали 404 HTTP-адрес ошибка. Я частично достигается это с помощью следующих строк:.htaccess Всегда спрятать определенный подкаталог из URL
#Remove en/ directory from URL
RewriteRule ^$ en/
#Forward all the requests to en/ directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ en/$1
Когда запросы направляются в «ан» каталог это снова отображается в URL. Это было бы поток:
- Типы пользователей: http://domain.com
- index.php Перенаправление http://domain.com/en потому что обнаруженный язык
- .htaccess Правила скрывает/EN каталог, оставляя URL-адрес http://domain.com
- типов клиентов http://domain.com/panel, чтобы получить доступ к своей панели пользователя
- .htaccess Перенаправление http://domain.com/en/panel
Как я могу удалить «en» каталог, оставляющий URL http://domain.com/panel после последнего действия в списке? Есть ли лучший способ управлять этим поведением?
Текущие правила:
Options -Indexes +FollowSymlinks -MultiViews
ErrorDocument 404 /404.php
RewriteEngine On
RewriteRule ^/?$ en/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^((?!en/).*)$ en/$1 [L,NC]
#Prevent direct access to PHP Scripts
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule \.php$ - [R=404,L]
#Remove WWW
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
У меня такое же поведение, как и раньше. Примечание. Файл .htaccess находится в корневом каталоге. – ProtectedVoid
Просто добавил полный .htaccess – ProtectedVoid
Я получаю то же самое. Я убедился, что я очистил кеш. Дополнительное примечание: при попытке получить доступ к другому каталогу, который не является «en», я получаю ошибку 404. Например: http://domain.com/es дает ошибку 404 (каталог «es» существует так же, как «en») – ProtectedVoid