2017-02-09 9 views
1

Я пытаюсь скрыть подкаталог с 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. Это было бы поток:

Как я могу удалить «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] 

ответ

1

Имейте это так:

Options -Indexes +FollowSymlinks -MultiViews 
ErrorDocument 404 /404.php 

RewriteEngine On 

#Remove WWW 
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule^http://%1%{REQUEST_URI} [R=301,L,NE] 

# add a trailing slash if public/$1 is a directory 
RewriteCond %{DOCUMENT_ROOT}/en/$1 -d 
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L] 

#Prevent direct access to PHP Scripts 
RewriteCond %{THE_REQUEST} \.php[?/\s] [NC] 
RewriteRule^- [R=404,L] 

RewriteRule ^/?$ en/ [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^((?!en/).*)$ en/$1 [L,NC] 

Очистить кэш браузера и проверить свои потоки.

+0

У меня такое же поведение, как и раньше. Примечание. Файл .htaccess находится в корневом каталоге. – ProtectedVoid

+0

Просто добавил полный .htaccess – ProtectedVoid

+0

Я получаю то же самое. Я убедился, что я очистил кеш. Дополнительное примечание: при попытке получить доступ к другому каталогу, который не является «en», я получаю ошибку 404. Например: http://domain.com/es дает ошибку 404 (каталог «es» существует так же, как «en») – ProtectedVoid

 Смежные вопросы

  • Нет связанных вопросов^_^