更改的 .htaccess 现在不能 POST 回来?
Changed .htaccess now can't POST back?
是的,我更改了 .htaccess 以删除 url 中的文件扩展名。现在我注意到我无法 post 支持任何类似表格或类似的东西?
这是我的 .htaccess 文件:
RewriteEngine On
# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://%{HTTP_HOST}/Main/ [R=301,L]
# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://%{HTTP_HOST}/Main/ [R=301,L]
# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ .php [L]
我在我的表单中使用 $_SERVER["PHP_SELF"]
,我认为可能需要更改以反映 .htaccess?我真的很茫然。
是的。这是你的 .htaccess
文件问题。
如果您从文件中删除 .php
扩展名,您的表单操作属性需要反映此更改。
您可以通过简单地将 $_SERVER['PHP_SELF']
变量传递给 trim() 函数来做到这一点,如下所示:
<form action="<?php echo trim($_SERVER['PHP_SELF'], '.php') ?>" method="POST">
<input name="example" type="text" />
<input type="submit" value="Submit">
</form>
现在您的表单应该可以正确提交了。
是的,我更改了 .htaccess 以删除 url 中的文件扩展名。现在我注意到我无法 post 支持任何类似表格或类似的东西?
这是我的 .htaccess 文件:
RewriteEngine On
# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://%{HTTP_HOST}/Main/ [R=301,L]
# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://%{HTTP_HOST}/Main/ [R=301,L]
# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ .php [L]
我在我的表单中使用 $_SERVER["PHP_SELF"]
,我认为可能需要更改以反映 .htaccess?我真的很茫然。
是的。这是你的 .htaccess
文件问题。
如果您从文件中删除 .php
扩展名,您的表单操作属性需要反映此更改。
您可以通过简单地将 $_SERVER['PHP_SELF']
变量传递给 trim() 函数来做到这一点,如下所示:
<form action="<?php echo trim($_SERVER['PHP_SELF'], '.php') ?>" method="POST">
<input name="example" type="text" />
<input type="submit" value="Submit">
</form>
现在您的表单应该可以正确提交了。