Har*_*iec 12 php parameters .htaccess mod-rewrite post
几天前,我有一个关于从地址栏中删除index.php的问题,因此页面的地址看起来越来越短.这个问题的最短解决方案是.htaccess文件中的(RewriteRule ^ index.php/[L,R = 301]).它的工作原理!
由于我将该字符串放入.htaccess中,因此某些页面会重定向到主页面.我花了很多时间猜测,为什么.据我了解,答案是:with RewriteRule ^index.php / [L,R=301],$ _POST参数不会发送到下一页.$ _GET参数没问题.一旦我RewriteRule ^index.php / [L,R=301]从.htaccess中删除,一切都会像往常一样变得很好.为什么会发生以及如何解决这个问题?
谢谢.
mar*_*rio 19
该[R]标志将导致重定向.用户代理会根据GET请求发出重定向.如果您真的想将URL缩短到/根路径,则无法做任何事情.
但是,您可以阻止POST请求被重写/重定向:
RewriteCond %{REQUEST_METHOD} !POST
RewriteRule ^index.php / [L,R=301]
Run Code Online (Sandbox Code Playgroud)
Ger*_*ben 12
您可以尝试使用[L,R=307].307不得根据规范更改请求方法,但我不知道浏览器如何实现307.
但问题的根源在于使用 <form action="____/index.php" ...
只需将操作留空即可POST到当前网址,例如
我正在使用类似的东西:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/(css|images|js)/
# don't rewrite existing files, directories and links
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
# rewrite everything else to index.php
RewriteRule .* index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
它适用于所有请求,通过index.php文件重写它.如果您需要重定向301(代表Moved Permanently代码),请查看以下问题:是否可以重定向发布数据?