Apache RewriteRule без завершающей косой черты (/)

#url #url-rewriting #apache2

#url #url-переписывание #apache2

Вопрос:

Я пытаюсь перенаправить URL-адреса с помощью .htaccess следующим образом:

 example.io/foo => example.io/~user/foo
example.io/foo/ => example.io/~user/foo/
  

и я попытался:

 <IfModule mod_rewrite.c>

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(example.io) [NC]
RewriteRule ^(.*)/?$ /~user/$1 [L]

</IfModule>
  

Когда я обращаюсь к example.io/foo/ , он отвечает [200] и отображается в браузере example.io/foo/ ,

но при доступе к example.io/foo , отвечает [301] и отображает example.io/~user/foo .

Я хочу, чтобы браузер отображался example.io/foo (без косой черты), когда я обращаюсь к example.io/foo

Ответ №1:

Для достижения этого:

 example.io/foo => example.io/~user/foo
example.io/foo/ => example.io/~user/foo/
  

вы должны сделать:

 RewriteCond %{REQUEST_URI} ^/foo/ [OR]
RewriteCond %{REQUEST_URI} ^/foo
RewriteRule ^(.*)$ ~user/$1 [L]