重定向以某种方式添加了尾部斜线
Redirecting somehow added a trailing slash
在 POST
之后使用 header('Location:employees');exit;
后,我不知何故被重定向到 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/
。这不会发生在其他 link 上,如果我使用 employee
,我将被正确重定向,没有添加尾部斜线。我怀疑是因为我的.htaccess
,但不影响其他link.
这是我的 .htaccess
:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ .php [NC,L]
即使我删除了内容,它仍然会在 employees
后添加一个斜线。我已经尝试清除浏览器的数据并在另一个浏览器中打开它(Microsoft Edge),结果还是一样。
我尝试用答案 here 更新 htaccess
,但仍然没有成功
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ / [L,R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ .php [NC,L]
我也尝试清除employees.php
的所有内容,看看是不是因为我的代码,但问题仍然存在。
如何防止其他 link 发生这种情况?我似乎无法扭转它,我设法找到的解决方案就是更改名称。虽然这不是问题,但我想知道这是什么原因。
你能试试这个 .htaccess 吗:(先备份你的 .htaccess,然后用这些行覆盖它)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /project_name/ [L,R]
我刚在我的服务器上测试过,它有效!
正在将我的评论转化为答案。
None 中显示的有问题的规则将添加尾部斜线。这可能是由于某些代码或 Apache 服务器指令造成的。
要验证这一点,请在 Chrome 开发工具中测试并禁用 缓存 并检查“网络”选项卡中显示的 3xx/4xx URL。
另一件需要注意的事情是,如果您的 URI 指向真实目录,那么 Apache 的 mod_dir
模块会添加一个尾随目录,并出于安全原因向客户端发送 301
。
在 POST
之后使用 header('Location:employees');exit;
后,我不知何故被重定向到 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/
。这不会发生在其他 link 上,如果我使用 employee
,我将被正确重定向,没有添加尾部斜线。我怀疑是因为我的.htaccess
,但不影响其他link.
这是我的 .htaccess
:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ .php [NC,L]
即使我删除了内容,它仍然会在 employees
后添加一个斜线。我已经尝试清除浏览器的数据并在另一个浏览器中打开它(Microsoft Edge),结果还是一样。
我尝试用答案 here 更新 htaccess
,但仍然没有成功
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ / [L,R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ .php [NC,L]
我也尝试清除employees.php
的所有内容,看看是不是因为我的代码,但问题仍然存在。
如何防止其他 link 发生这种情况?我似乎无法扭转它,我设法找到的解决方案就是更改名称。虽然这不是问题,但我想知道这是什么原因。
你能试试这个 .htaccess 吗:(先备份你的 .htaccess,然后用这些行覆盖它)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /project_name/ [L,R]
我刚在我的服务器上测试过,它有效!
正在将我的评论转化为答案。
None 中显示的有问题的规则将添加尾部斜线。这可能是由于某些代码或 Apache 服务器指令造成的。
要验证这一点,请在 Chrome 开发工具中测试并禁用 缓存 并检查“网络”选项卡中显示的 3xx/4xx URL。
另一件需要注意的事情是,如果您的 URI 指向真实目录,那么 Apache 的 mod_dir
模块会添加一个尾随目录,并出于安全原因向客户端发送 301
。