RewriteCond и RewriteRule могут остановить POST? - PullRequest
0 голосов
/ 22 апреля 2020

В моем .htaccess у меня есть эти инструкции:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]

RewriteCond %{REQUEST_FILENAME}.php [NC]
RewriteRule ^ %{REQUEST_URI}.php [L]

Теперь я сталкиваюсь с проблемами при запуске любого $ _POST. Ни за что, ни с php, ни с html, ни с ajax, ни с jquery. Значения POST не передаются. Они просто не передаются в файл назначения. Может ли быть проблема, вызванная вышеуказанными правилами и условиями? Если да, как я могу получить тот же результат, не блокируя POST? Мне нужно внешне перенаправить /dir/foo.php в / dir / foo и внутренне перенаправить / dir / foo в /dir/foo.php.

1 Ответ

1 голос
/ 22 апреля 2020

ваш .htaccess должен быть таким

RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [L]

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

RewriteEngine on

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]

RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]

...