PHP-скриптинг форм с перезаписью cond

#php #.htaccess

#php #.htaccess

Вопрос:

Я новичок в php scripting и пытаюсь создать контактную форму

это форма, которая у меня есть (только важная часть)

 <form data-name="Get In Touch Form" name="wf-form-Get-In-Touch-Form" action="contactform.php" </form>
  

у меня есть условия перезаписи следующим образом

 #remove html?
#RewriteEngine on
#RewriteCond %{THE_REQUEST} /([^.] ).html [NC]
#RewriteRule ^ /%1 [NC,L,R]

#RewriteCond %{REQUEST_FILENAME}.html -f
#RewriteRule ^ %{REQUEST_URI}.html [NC,L]

#remove php?
#RewriteEngine on
#RewriteCond %{THE_REQUEST} /([^.] ).php [NC]
#RewriteRule ^ /%1 [NC,L,R]

#RewriteCond %{REQUEST_FILENAME}.php -f
#RewriteRule ^ %{REQUEST_URI}.php [NC,L]
  

в настоящее время условие перезаписи отключено, и форма работает, но если я включу условия, она не будет работать
, как я могу исправить эту проблему?
Спасибо

Комментарии:

1. Что вы подразумеваете под «это не сработает»? Как это связано с вашей формой?

Ответ №1:

 RewriteCond %{THE_REQUEST} /([^.] ).php [NC]
RewriteRule ^ /%1 [NC,L,R]
  

Здесь вы внешне переписываете все запросы, которые заканчиваются .php на версию без суффикса, и браузер будет следовать этому перенаправлению, делая запрос GET, что означает, что на этом этапе вы теряете свои данные POST.

Ваша форма должна напрямую указывать на action="contactform" вместо action="contactform.php" , тогда этого не произойдет в первую очередь.

(Вы также можете добавить исключение к этому, используя вторую RewriteCond, которая проверяет, не был ли метод запроса отправлен первым, чтобы это перенаправление не происходило в таких случаях.)