htaccess только перенаправляет и не переписывает - PullRequest
1 голос
/ 12 марта 2019

У меня настроен .htaccess для перезаписи URL, но он только перенаправляет. Как я могу заставить его переписать, а не перенаправить?

Что я хочу, чтобы произошло? Пользователь заходит на example.com/foo и видит контент с сайта example.com/bar. Браузер должен хранить example.com/foo в строке URL.

Что происходит? пользователь переходит на example.com/foo и перенаправляется на example.com/bar. URL браузера обновлен.

Мой файл htaccess:

  <IfModule mod_rewrite.c>
#THIS REDIRECTS NON HTTPS TO HTTPS
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

#THIS SHOULD REWRITE BUT INSTEAD IT REDIRECTS. WHY???
RewriteCond %{HTTPS} on
RewriteRule ^foo/$ https://example.com/bar[L,QSA]

</IfModule>
<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
    </IfModule>

Это мой apache .conf файл:

<Directory /var/www/html>
Require all granted
AllowOverride All 
Header set Access-Control-Allow-Origin "*" 
</Directory>

1 Ответ

1 голос
/ 12 марта 2019
#THIS SHOULD REWRITE BUT INSTEAD IT REDIRECTS. WHY???
RewriteCond %{HTTPS} on
RewriteRule ^foo/$ https://example.com/bar [L,QSA]

Он перенаправляет, потому что вы используете полный абсолютный URL (один начинается с http:// или https://) в целевой.Чтобы избежать перенаправления, используйте относительный URI в target как:

RewriteCond %{HTTPS} on
RewriteRule ^foo/$ /bar [L,NC]

. Обязательно очистите кеш браузера или используйте новый браузер для проверки этого изменения.

...