всегда сохранять URL при перенаправлении в подпапку - PullRequest
1 голос
/ 20 июля 2010

Я хочу перенаправить все запросы по определенному пути на моем сервере (/ app) в подкаталог / app / app_site. Следующие правила перезаписи выполняют работу для запросов типа 'http://localhost/app/somepage.htm':

RewriteCond %{REQUEST_URI} !^/app/app_site.*$
RewriteCond %{REQUEST_URI} !^/app_site.*$
RewriteRule ^/app(.*)     /app/app_site$1 [L,PT]

Это приводит к правильной странице при сохранении URL. Кроме того, 'http://localhost/app/' будет извлекать страницу индекса по адресу /app/app_site/index.html, сохраняя при этом URL' http://localhost/app/'.

Однако, когда я ввожу 'http://localhost/app',, происходит следующее:

  • выбрана правильная страница, по адресу /app/app_site/index.html
  • пока URL перенаправляется на 'http://localhost/app/app_site/'

Я почти на месте, но хотел бы сохранить URL во всех случаях (в том числе и без косой черты). Кто-нибудь знает, как это сделать? Спасибо!

1 Ответ

1 голос
/ 20 июля 2010

Это ожидаемое поведение при включенном DirectorySlash, поскольку вы перезаписали каталог, в котором отсутствует косая черта, и mod_dir выполняет эту очистку после перезаписи URL с помощью mod_rewrite.

Самое простое решение - переписать URL-адрес таким образом, чтобы он всегда соответствовал пути к каталогу с символом косой черты, например:

RewriteCond %{REQUEST_URI} !^/app/app_site.*$
RewriteCond %{REQUEST_URI} !^/app_site.*$
RewriteRule ^/app/?(.*)$     /app/app_site/$1 [L,PT]

.добавить косую черту и, следовательно, избежать внешнего перенаправления на /app/app_site/, который вы испытываете сейчас.

...