当初、このコードは「きれいな」 URLを作成するために作成されました。
以下のコードを使用すると、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
https://myurl.com/registerなどの一致する URL を受け取り、それを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
関連情報:
OS: Linux
サーバー: Apache
コントロール: Plesk
ディレクトリ: /var/www/vhosts/myurl.com/conf
ファイル: vhost_ssl.conf
複数のフォーラムや記事を検索しましたが、役に立ちませんでした。
Article 1: mod_rewrite でよりきれいな URL を作る([PT] フラグの使用を含む)
ここで何が起こっているのか、それを修正する方法について誰か考えがありますか? 「きれいな」 URLを表示するにはどうすればよいですか?