重定向以某种方式添加了斜杠

时间:2018-08-13 07:29:53

标签: php .htaccess redirect mod-rewrite xampp

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的所有内容,只是为了查看是否由于我的代码而引起,但是问题仍然存在。

如何防止其他链接发生这种情况?我似乎无法扭转它,而我设法找到的解决方案是仅更改名称。虽然这不是问题,但我想知道原因。

2 个答案:

答案 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]

我刚刚在服务器上对其进行了测试,它可以正常工作!