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

RewriteEngine добавляет /% 25 / в мой каталог http-> https

Мой файл конфигурации настроен так:

<VirtualHost *:80>
        RewriteEngine on
        RewriteCond %{HTTPS} off
        RewriteRule (.*) https://example.com/%$1 [R,L]
</VirtualHost>

<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        DocumentRoot /ssd/www/
        SSLEngine on
        SSLCertificateFile /ssd/certs/example_com.crt
        SSLCertificateKeyFile /ssd/certs/example_com.key
        SSLCertificateChainFile /ssd/certs/example_com.ca-bundle
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Проблема в том, что при переходе на стандартную HTTP-страницу при перенаправлении она добавляет /%25/ в домен, например ..

http://example.com изменен на https://example.com/%25/ и http://example.com/my-category/my-page изменен на https://example.com/%25/my-category/my-page.

Maybelline 4 должен быть:

RewriteRule (.*) mydomain.com/$1 [R,L]

% 25 - это значение% в кодировке URL

Как уже отмечал Викелидис, %$1 ошибочен. Однако у вас есть другие проблемы, которые также следует решить.

В RewriteCond проверка директивы для HTTPS (например, порт 443) в VirtualHost порт 80 является избыточным и должен быть удален.

Кроме того, при использовании в конфигурации сервера RewriteRule шаблон соответствует полному URL-пути, который включает префикс косой черты. Ваша замена приведет к двойному слешу. Apache сворачивает это позже, чтобы разрешить запрос, однако в некоторых случаях он все еще доступен, поэтому может нарушить более поздние правила.

Это перенаправление также должно быть постоянным 301, а не временным 302 (по умолчанию), но меняйте его только тогда, когда вы уверены, что он работает нормально.

Итак, если вы используете mod_rewrite, это должно быть записано как:

<VirtualHost *:80>
    RewriteEngine on
    RewriteRule /(.*) https://example.com/$1 [R=301,L]
</VirtualHost>

Опять же, здесь вам вообще не нужен mod_rewrite. Mod_alias Redirect было бы более эффективно:

<VirtualHost *:80>
    Redirect 301 / https://example.com/
</VirtualHost>