【发布时间】:2016-01-02 11:51:11
【问题描述】:
我在 Apache htaccess 文件中使用以下指令隐藏 php 文件扩展名
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]
我有一个像这样的简单 html 表单
<form action="register.php" method="post">
<input type="text" name="name">
<input type="submit">
</form>
在我的 PHP 页面中,这是我之前检查表单是否已发布的方式
if ($_SERVER["REQUEST_METHOD"] == "POST") {
/* code to process the post */
}
但是由于我添加了 htaccess 指令来隐藏 php 文件扩展名,“POST”变成了“GET”,并且上面的代码永远不会执行。有没有好的方法来处理这个?我知道这是导致这种情况的内部重定向,但有没有一种优雅的方式来处理这个问题?出于明显的原因,我不想使用以下方法
if (isset($_POST['submit'])) {
【问题讨论】:
-
我无法复制您描述的问题-
-
我想复制它应该不难。您需要将第一块规则放入您的 htaccess 文件中。然后使用第二个代码块创建一个 php 页面,并在 html 表单代码的上方使用 REQUEST_METHOD 放入我的第三个代码块 - 并在 IF 条件下放入警报或控制台消息。您可以看到它不会触发,因为它期待来自服务器的回复 (POST),但由于重定向而获得了 GET。
标签: php .htaccess redirect post get