Назад | Перейти на главную страницу

Перепишите изменяющийся URL, если последняя косая черта опущена

У меня есть правило перезаписи, которое работает нормально, но в конечном итоге меняет видимый URL-адрес, если при переходе к index.php:

RewriteEngine on
RewriteCond  %{REQUEST_URI} !main
RewriteRule /.* /~user/main$0

Когда кто-то посещает

http://user.dev.example.com/utilities/pib/

Страница работает нормально. Однако если они посетят

http://user.dev.example.com/utilities/pib

Они перенаправляются на

http://user.dev.example.com/~user/main/utilities/pib/

Это по-прежнему работает нормально, но я бы предпочел, чтобы URL-адрес не менялся. У сервера другая конфигурация, позволяющая ~user в URL-адресе, чтобы перейти к public_html на диске (где находятся эти файлы). Итак, фактический URL-адрес должен быть:

http://dev.example.com/~user/main/utilities/pib/

Но это все равно оставляет мое имя в домене. Я не уверен, что смогу решить эту проблему, но я также не уверен, какая другая конфигурация может ее вызвать.

Вы всегда можете использовать mod_rewrite для добавления косой черты в конце

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301]

Добавьте это над своим первым правилом

Вышеуказанные правила не являются причиной этого. Проверьте все включенные файлы конфигурации в conf.d (или похожие). Если вы установите AllowOverride Allнайди все .htaccess файлы с:

find /path/to/document/root -name .htaccess

и взгляни на это.

Я также предлагаю вам включить mod_rewrite журнал:

RewriteLog /tmp/rewrite.log
RewriteLogLevel 9

чтобы увидеть, как анализируется URI.