htaccess: мне нужна срочная помощь, чтобы удалить %3f позади с помощью URL-адресов, сгенерированных запросом отправки формы.

3 года с хостингом на a2hosting. Сегодня я заметил, что каждый запрос формы заканчивается %3f в конце сгенерированного URL-адреса, что составляет 404. Это произошло внезапно.

Это мой код htaccess, который работает годами без каких-либо проблем. Он удаляет .php как расширение, удаляет ?check= и заменяет его на /

# To externally redirect /site.com/foo.php?find=123 to site.com/dir/foo
RewriteCond %{THE_REQUEST} ^GET\s([^.]+)\?check=([^&\s]+) [NC]
RewriteRule ^ %1/%2? [R=301,L]

# To internally forward /site.com/foo.php?find=123 to site.com/dir/foo
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/([^/]+)/?$ $1.php?check=$2 [L,QSA]


# Remove .php extension
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

Код работает, чтобы изменить, например, запрос

from
https://www.whatever.org/whatever.php?check=msn.com

to
https://www.whatever.org/whatever/msn.com


Right Now i get 
https://www.whatever.org/whatever/msn.com%3f

Мне действительно нужно удалить %3f

1 ответ
1

Обновлять.

Поиграв некоторое время с кодом htaccess, кажется, что это работает. изменение

# To externally redirect /example.com/foo.php?find=123 to example.com/dir/foo
RewriteCond %{THE_REQUEST} ^GET\s([^.]+)\?check=([^&\s]+) [NC]
RewriteRule ^ %1/%2? [R=301,L]

к

# To externally redirect /dir/foo.php?find=123 to /dir/foo
RewriteCond %{THE_REQUEST} ^GET\s([^.]+)\?check=([^&\s]+)(?:&(\S+))? [NC] 
RewriteRule ^ %1/%2?%3 [R,L]

проблема решена, и %3f за URL-адресом, сгенерированным запросом, исчез.

деление

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *