在header('Location:employees');exit;
之后使用POST
之后,我被重定向到localhost/project_name/employees/
。即使我的<a>
指向employees
<a href="employees" role="button" class="col-1 my-1 mr-1 btn btn-outline-primary btn-sm">Employee</a>
我总是重定向到employees/
。其他链接则不会发生这种情况,如果我使用employee
,则表示我已正确重定向,没有添加斜杠。我怀疑是因为我的.htaccess
,但它不会影响其他链接。
这是我的.htaccess
:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
即使我删除了内容,它仍然在employees
后面加上斜杠。我已经尝试清除浏览器的数据并在另一个浏览器(Microsoft Edge)中打开它,结果仍然相同。
我尝试用答案here更新htaccess
,但仍然没有成功
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
我还尝试清除employees.php
的所有内容,只是为了查看是否由于我的代码而引起,但是问题仍然存在。
如何防止其他链接发生这种情况?我似乎无法扭转它,而我设法找到的解决方案是仅更改名称。虽然这不是问题,但我想知道原因。
答案 0 :(得分:1)
将我的评论转换为答案。
有问题的规则均未添加斜杠。可能是由于某些代码或Apache服务器指令所致。
要对此进行验证,请在禁用了缓存的Chrome开发工具中进行测试,然后在“网络”标签中查看其中显示的3xx / 4xx URL。
要注意的另一件事是,如果您的URI指向真实目录,则Apache的mod_dir
模块将添加尾随目录,并出于安全原因将301
发送给客户端。
答案 1 :(得分:0)
您可以尝试以下.htaccess :(首先备份您的.htaccess,然后用这些行覆盖它)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /project_name/$1 [L,R]
我刚刚在服务器上对其进行了测试,它可以正常工作!