最初,编写此代码是为了创建“漂亮”的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
它接受任何匹配的 url,例如https://myurl.com/register并将其重写为https://myurl.com/?get=register。在浏览器中找到并显示相应的页面。
但是,我希望将原始 url 传递给浏览器。为此,我在 RewriteRule 中添加了[PT] 标志,如下所示:
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 条: 使用 mod_rewrite 制作更漂亮的 URL(包括使用 [PT] 标志)
有没有人知道这里发生了什么以及如何解决它?如何让“漂亮”的网址显示?