Назад | Перейти на главную страницу

.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 файлы для этого?

сначала бросьте 404 на «/ test» и сразу после бросьте 301 и перенаправьте на «/test.php».

Вы не можете этого сделать - независимо от того, какой метод вы используете (.htaccess, Apache, PHP и т. Д.). HTTP работает не так. (Но я не уверен, почему вы хотите это сделать - контент либо не существует, либо был перемещен, не может быть и того, и другого.)

  1. Запросы браузера /test
  2. Сервер отвечает 404. (Первоначальный запрос браузера здесь заканчивается.)
  3. Затем «браузеру» нужно будет сделать еще один запрос к серверу, чтобы он ответил 301. (Браузеру также необходимо будет изменить запрос, чтобы сервер знал не отправлять 404, а вместо этого отправлять 301). Этого не произойдет.

На любой отдельный запрос вы получаете один ответ - один код состояния.