mod_rewrite, удаление косой черты в конце и текущий каталог
-
14-11-2019 - |
Вопрос
Я просмотрел связанные с этим вопросы, но я не могу понять это маленькое предостережение.Тот Самый золотой правило, которое я видел, используется для удаления косой черты в конце с помощью и mod_rewrite является:
RewriteRule ^(.*)/$ /$1 [R,L]
.
Это все прекрасно, но это отменяет предыдущую структуру каталогов, если таковая существует.Итак, если начальная загрузка моего приложения запущена в корневом каталоге размещенного пути, это работает, но не в подкаталоге:
http://localhost/path/to/application/pretty/query/string/
Становится
http://localhost/pretty/query/string
(Примечание;косая черта удалена, но и каталог тоже)
Как я могу сохранить текущее местоположение каталога, чтобы предыдущий пример возвращал ожидаемое:
http://localhost/path/to/application/pretty/query/string
Обновить
В конечном счете, это делается ради согласованности;либо добавление или удаление завершающей косой черты является подходящим вариантом.Я работаю взад и вперед, пытаясь заставить работать тот или иной подход, но безуспешно.
Ответы, которые либо добавляют, либо удаляют косую черту в конце, приемлемы!
Решение
Ну, я решил это для добавления:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /_dev/_projects/mf_frame
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ $1/ [R,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) ?routePath=$1 [L,QSA]
Мне не хватало RewriteBase
директива.Я сделаю еще одну попытку раздеться.Пожалуйста, не стесняйтесь предлагать альтернативы моему подходу, если есть что-то, что можно сделать лучше.