Таким образом, у меня был этот код в моем HTACCESS, что было здорово, потому что он сначала удаляет расширение .php-файла с моих страниц, если посетитель входит на страницу с расширением .php-файла, а затем он позволяет загружать страницу без расширения. (Таким образом, это просто напоминает URL-адрес)
# REMOVE FILE EXTENSIONS RewriteEngine On # browser requests PHP RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /([^\ ]+)\.php RewriteRule ^/?(.*)\.php$ /$1 [L,R=301] # check to see if the request is for a PHP file RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^/?(.*)$ /$1.php [L]
Он отлично работает, но затем я столкнулся с проблемами на странице: http://www.CyberBytesInc.com/contact, потому что у меня есть форма, которая вызывает файл .php для отправки:
<form id="request-form" action="resources/script/question-send.php" method="post">
И вышеупомянутый код htaccess удаляет .php для этого файла, и я получаю код ошибки «Прямой доступ к этой странице не разрешен». который находится внутри скрипта, это
} else { die('Direct access to this page is not allowed.'); }
Как только я удалю это из htaccess, тогда он начнет работать:
# browser requests PHP RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /([^\ ]+)\.php RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]
Но тогда я не получаю этого, удаляя расширение файла, если .php помещается в конце страницы (большая часть Google индексируется с расширением файла, и я пытаюсь удалить это.
Я думаю, если бы я мог каким-то образом сделать так, чтобы код htaccess работал, кроме как при доступе к файлу из моего / resources / scripts / folder, я не знаю, как лучше всего это исправить.
Из-за этого вы можете перейти на сайт прямо сейчас, чтобы убедиться, что он не работает. На данный момент я, вероятно, собираюсь удалить вышеупомянутую строку кода, чтобы моя форма работала. Поэтому, если вы просматриваете сайт и форма работает, это связано с тем, что я удалил вышеуказанный .htaccess, пока не выясню, как его успешно получить.
Благодаря!
EDIT: Полный код для question-send.php
<?php // Get email address $email_address = 'email@site.com'; // Ensures no one loads page and does simple spam check if( isset($_POST['name']) && empty($_POST['spam-check']) ) { // Declare our $errors variable we will be using later to store any errors $error = ''; // Setup our basic variables $input_name = strip_tags($_POST['name']); //required $input_email = strip_tags($_POST['email']); //required $input_subject = strip_tags($_POST['subject']); $input_message = strip_tags($_POST['message']); //required // We'll check and see if any of the required fields are empty if( strlen($input_name) < 2 ) $error['name'] = '<label for="question-name">Please enter your <b>Name</b></label>'; if( strlen($input_message) < 5 ) $error['message'] = '<label for="question-message">Please leave a longer <b>Message</b></label>'; // Make sure the email is valid if( !filter_var($input_email, FILTER_VALIDATE_EMAIL) ) $error['email'] = '<label for="question-email">Please enter a valid <b>Email Address</b></label>'; // Set a subject & check if custom subject exist if( $input_subject ) $subject = "(Question) - $input_subject"; else $subject = "(Question) - No Subject"; // $message .= "$input_message\n"; $message .= "\n\n---\nThis email was sent by $input_name from $input_email"; // Now check to see if there are any errors if( !$error ) { // No errors, send mail using conditional to ensure it was sent if( mail($email_address, $subject, $message, "From: $input_email") ) { echo '<p class="success"><b>EMAIL SENT SUCCESSFULLY.</b><br />' . "Dear $input_name, " . 'thank you for contacting CyberBytes Inc. Please allow us <b>24-48</b> hours to review your request and get back to you. If you need a response sooner, please contact us via telephone at (716) 876-1824.<br /><br /><b>Please verify that this is your correct Email Address:</b><br />' . "Email Address: <i>$input_email</i>" . '<br /><br /><span class="red"><b>PLEASE NOTE:</b></span><br /> If we do not respond to your request within a reasonable amount of time, please give us a call as there may have been an error on our end with your request.</p>'; } else { echo '<p class="error">There was a problem sending your email! Please give us a call at (716) 876-1824 as there seems to be an error on our end with the form.</p>'; } } else { // Errors were found, output all errors to the user $response = (isset($error['name'])) ? $error['name'] . "\n" : null; $response .= (isset($error['email'])) ? $error['email'] . "\n" : null; $response .= (isset($error['message'])) ? $error['message'] . "\n" : null; echo "<p class='error'>$response</p>"; } } else { die('Direct access to this page is not allowed.'); }