.htaccess 在不存在的路径上抛出 404 和 301

.htaccess 在不存在的路径上抛出 404 和 301

目前我已经在我的 .httaccess 中设置了它

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.(php|html|txt|js|css|png|jpe?g|gif|svg|woff|ico|csv|xml|pdf|gzip)
RewriteCond %{REQUEST_URI} !^/?$
RewriteRule (.*) /$1.php [L,R=301]

所以基本上我将所有没有任何扩展的 URL 重定向到 php 页面。

例如,我重定向/test/test.php并在执行此操作时抛出 301。

我想要的是先抛出 404/test然后立即抛出 301 并重定向到/test.php

是否可以.htaccess在 apache.conf文件中写入一些内容来实现这一点?

答案1

首先在“/test”上抛出 404,然后立即抛出 301 并重定向到“/test.php”。

不管你使用什么方法(.htaccessApache、PHP 等),你都无法做到这一点。HTTP 的工作方式并非如此。(但我不确定你为什么要这样做——内容要么不存在,要么已经移动,不可能两者兼而有之。)

  1. 浏览器请求/test
  2. 服务器以 404 响应。(初始浏览器请求至此结束。)
  3. 然后,“浏览器”需要向服务器发出另一个请求,然后服务器以 301 做出响应。(浏览器还需要修改请求,以便服务器知道不要发送 404,而是发送 301。) - 这不会发生。

对于任何单个请求,您都会得到一个响应 - 一个状态代码。

相关内容