У меня есть правило перезаписи, которое работает нормально, но в конечном итоге меняет видимый 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.