htaccess — не переписывать URL, если данные POST

Я прочитал довольно много отзывов о htaccess, но он все еще меня сбивает с толку. У меня есть следующее правило в моем файле .htaccess, в основном удаляющее расширение .php из файлов и разрешающее URL-адреса без расширения:

RewriteEngine On

# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://www.example.com/$1 [R=301,L]

# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://www.example.com/$1 [R=301,L]

# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]

Однако, когда я хочу связаться, например. contact_form.php (который обрабатывает данные формы из формы в HTML), он перезаписывается в contact_form, и все данные POST теряются. Я хотел бы добиться того, чтобы, когда запрос содержит почтовые данные, URL-адрес не должен быть перенаправлен/переписан. Честно говоря, я понятия не имею, как должно выглядеть правило перезаписи. Вся помощь очень ценится!


person Fygo    schedule 12.03.2014    source источник


Ответы (1)


Вы можете вставить это правило как первое правило, чтобы игнорировать запросы POST:

RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^ - [L]
person anubhava    schedule 12.03.2014
comment
Если вы хотите исключить почтовый запрос из какой-либо последовательности правил, используйте: RewriteCond %{REQUEST_METHOD} !POST - person Vitor Almeida; 03.12.2019