Изначально этот код был написан для создания "pretty" urls.
При использовании приведенного ниже кода mod_rewrite работает как следует.
<Directory /var/www/vhosts/myurl.com/httpdocs>
Options Indexes FollowSymLinks
php_admin_flag engine on
php_admin_value open_basedir none
AllowOverride all
Order allow,deny
Allow from all
</Directory>
RewriteEngine on
RewriteCond %{HTTPS} !=off
RewriteCond %{LA-U:REQUEST_FILENAME} !-f
RewriteCond %{LA-U:REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteCond $1 ^(register|account|logout|profile|edit_profile).*$
RewriteRule ^/(.*)$ https://myurl.com/?get=$1
Он принимает любой соответствующий URL-адрес, такой как https://myurl.com/register, и переписывает его как https://myurl.com/?get=register. Соответствующая страница найдена и отображается в браузере.
Однако я хочу, чтобы исходный URL был передан в браузер. Для этого я добавил флаг [PT] в мой RewriteRule, как показано ниже:
RewriteRule ^/(.*)$ https://myurl.com/?get=$1 [PT]
Это позволяет https://myurl.com/register (тот же URL, что и выше) пройти в браузер, но больше не отображает страницу Вместо этого он возвращает следующую ошибку:
Bad Request
Your browser sent a request that this server could not understand.
Client sent malformed Host header
Соответствующая информация:
ОС: Linux
Сервер: Apache
Управление: Plesk
Каталог: /var/www/vhosts/myurl.com/conf
Файл: vhost_ssl.conf
Я искал несколько форумов и статей безрезультатно.
Статья 1: Создание более симпатичных URL с помощью mod_rewrite (включает использование флага [PT])
У кого-нибудь есть идеи о том, что здесь происходит и как это исправить? Как я могу получить "симпатичный" URL для отображения?