Как удалить косую черту из определенного URL с помощью htaccess

У меня есть следующий .htaccessfile

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

И у меня есть следующий URL:

http://localhost/mysite/loginPage/

Я хочу, чтобы этот URL никогда не заканчивался косой чертой (loginPage /).

Я пытался использовать следующие строки:

RewriteRule ^(.*)\/(\?.*)?$ $1$2 [R=301,L]
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteRule ^([^/]+/[0-9]+/[0-9]+/[0-9]+/[^/]+)/.+$ - [L,R=404]

Но я получаю сообщение об ошибке во всех случаях, что страница не перенаправляет должным образом. Пожалуйста, имейте в виду, что я хочу это только для определенного URL выше, меня не волнует остальная часть сайта.

2

Решение

Я хочу это только для определенного URL выше

В этом случае ваше правило должно просто соответствовать именно этому URI, а не .*/.* и т.п.

Есть ваши правила, как это:

RewriteEngine on

RewriteCond %{REQUEST_URI} ^(/mysite/loginPage)/$ [NC]
RewriteRule ^ %1 [L,R=301]

RewriteCond $1 !^(index\.php|resources|robots\.txt) [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php/$0 [L]

Вам не нужно QSA флаг в последнем правиле также.

Обязательно очистите кеш браузера перед тестированием этого изменения.

1

Другие решения

Это зависит от того, куда вы положили правило для переписывания. Приведенные вами примеры работают. Но вы должны поставить их перед вашей последней строкой htaccess.

RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\/(\?.*)?$ $1$2 [R=301,L]
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

Это создаст правильный вывод и может быть проверен с помощью чего-то вроде тестер htaccess

Если вы хотите именно этот URL, вы можете прибегнуть к:

RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^mysite/loginPage/$ mysite/loginPage? [R=301,L]
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

Вы также можете указать абсолютное перенаправление с

RewriteRule ^mysite/loginPage/$ http://%{HTTP_HOST}/mysite/loginPage? [R=301,L]
2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector