mod_rewrite, удаление косой черты в конце и текущий каталог

StackOverflow https://stackoverflow.com/questions/6021293

Вопрос

Я просмотрел связанные с этим вопросы, но я не могу понять это маленькое предостережение.Тот Самый золотой правило, которое я видел, используется для удаления косой черты в конце с помощью и 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 директива.Я сделаю еще одну попытку раздеться.Пожалуйста, не стесняйтесь предлагать альтернативы моему подходу, если есть что-то, что можно сделать лучше.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top