2013-08-16 3 views
0

У меня есть структура каталогов вроде этого:Trail слэш с несколькими HTAccess

public_html 
.htaccess[1] 
    -apps  
    -.htaccess[2] 
    -admin 
    -myviwo 

, когда я прошу http://localhost/mysite/admin он перенаправляет меня http://localhost/mysite/apps/admin/ и показывает мне содержимое каталога администратора, если я прошу http://localhost/mysite/admin/ это не перенаправляет но это покажет мне содержимое каталога администратора, которое правильно. Но я хочу:

http://localhost/mysite/admin

http://localhost/mysite/admin/

Оба указанных выше URL-адресов показывает мне содержание каталога админ без перенаправления меня.

.htaccess [1]

RewriteEngine On 

RewriteBase/
RewriteRule (.*) apps/$1 [L] 

.htaccess [2]

RewriteEngine On 

RewriteBase/
RewriteRule ^admin/?(.*)$ admin/$1 [L] 
RewriteRule ^(.*)$ myviwo/$1 [L] 

Как я могу добиться этого?

ответ

1

В каталоге администратора, добавьте файл Htaccess со следующим:

DirectorySlash Off 

Это делает его так mod_dir не будет перенаправлять запросы для каталога admin. Тем не менее, обратите внимание, что есть important reason why directory slash is "on" by default:

Предупреждение безопасности

Выключение слэш перенаправление может привести к раскрытию информации. Рассмотрим ситуацию, в которой активна mod_autoindex. (Options +Indexes) и DirectoryIndex установлен в действительный ресурс (скажем, index.html), и для этого URL нет другого специального обработчика. В этом случае запрос с завершающей косой чертой отобразит файл index.html. Но запрос без косой черты перечислит содержимое каталога.

Если с тобой все в порядке, тогда это все, что вам нужно.

В противном случае может потребоваться специальное правило для admin. В файле .htaccess[1] добавьте прямо под переписывания основания:

RewriteRule ^admin$ apps/admin/ [L] 

EDIT: сделать выше правило динамичны, вам необходимо сначала проверить, если это каталог:

RewriteCond %{DOCUMENT_ROOT}/apps%{REQUEST_URI} -d 
RewriteRule ^(.*[^/])$ apps/$1/ [L] 
+0

является есть ли способ сделать 'RewriteRule^admin $ apps/admin/[L]' dynamic? Я имею в виду, что это происходит во всех каталогах в каталоге приложений. – Eeliya

+0

@Eeliya см. Редактировать выше –

+0

не работает, извините – Eeliya

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