目前我已经在我的 .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”。
不管你使用什么方法(.htaccess
Apache、PHP 等),你都无法做到这一点。HTTP 的工作方式并非如此。(但我不确定你为什么要这样做——内容要么不存在,要么已经移动,不可能两者兼而有之。)
- 浏览器请求
/test
- 服务器以 404 响应。(初始浏览器请求至此结束。)
- 然后,“浏览器”需要向服务器发出另一个请求,然后服务器以 301 做出响应。(浏览器还需要修改请求,以便服务器知道不要发送 404,而是发送 301。) - 这不会发生。
对于任何单个请求,您都会得到一个响应 - 一个状态代码。