Я пытаюсь использовать Apache mod_rewrite .Первым делом я переписал свой URL в файл index.php
, который работал нормально.Но я подумал, что тоже должен удалить косую черту (и), потому что я предпочел бы, чтобы это обрабатывал Apache, а не мой маршрутизатор PHP.
Вот весь контент моего .htaccess
файла:
RewriteEngine on
# one of the attempts to remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.*)/+$
RewriteRule ^(.*)/+$ $1 [R=301,L]
# This is the rewriting to my index.php (working)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [L]
Проблема: Я прочитал несколько вопросов об удалении косой черты, но не смог найти рабочий ответ для меня:
Для каждого ответа, который я пробовал, я былсмог добраться до моего роутера PHP
index.php
(находится в
Phunder\public\
) без косой черты:
// Requested URL | No redirection
http://localhost/projects/Phunder/public/home | http://localhost/projects/Phunder/public/home
Но при запросе той же страницы с косой чертой я перенаправляюсь с включенным абсолютным путем:
// Requested URL | Wrong redirection
http://localhost/projects/Phunder/public/home/ | http://localhost/C:/xampp/htdocs/projects/Phunder/public/home
Другая информация: - Я всегда очищаю свой кеш при тестировании
- Изменение последнего RewriteRule до
RewriteRule ^(.*)/?$ index.php?/$1 [L]
приводит к ошибке 404 с URL с косой чертой. - Фактическое неправильное перенаправление приводит к ошибке 403
Я новичок в mod_rewrite. Я не всегда понимаю, что яу (печально).Есть что-то, что я пропустил или неправильно использовал?Что я должен сделать, чтобы получить ожидаемое поведение?