如何解决httpd (apache) - 重写页面 -> 查询参数
我有一个包含目录和页面的网站。 我们将目录称为“Maintenance”和页面“page1.html,...”
我想将目录下的每个文件重定向到查询参数如'/?q=pageX'。
<VirtualHost *:80>
ServerName myServer.com
ServerAlias www.myServer.com
DocumentRoot "/var/www/html"
RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
RewriteRule ^(/Maintenance/[^/]+)\.html$ /?q=MyPage [R=301,L]
RewriteRule "^(.*)\.ht$" "index.html/?q=$1 [NC,L,QSA,CO=RewriteRule;01;https://www.myServer.com;30/;SameSite=None;Secure]"
Redirect permanent /(.*) https://%{SERVER_NAME}/$1
我一直在尝试使用各种设置的 ModeRewrite,阅读了大量的“操作方法”,但对我没有任何作用。
非常感谢您的帮助。
谢谢, 约翰
解决方法
您可以在 2 个 VirtualHost
部分使用这些规则:
<VirtualHost *:80>
ServerName myServer.com
ServerAlias www.myServer.com
DocumentRoot "/var/www/html"
RewriteEngine on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
</VirtualHost>
<VirtualHost *:443>
ServerName myServer.com
ServerAlias www.myServer.com
DocumentRoot "/var/www/html"
RewriteRule ^/Maintenance/([^/]+)\.html?$ /?q=$1 [QSA,NC,L]
RewriteRule ^(.*)\.ht$ /?q=$1 [NC,QSA,CO=RewriteRule;01;https://www.myServer.com;30/;SameSite=None;Secure]
</VirtualHost>
在 VirtualHost *:443
中保留重写规则很重要,因为端口 80 一只是将所有流量重定向到 https
。
根据您显示的示例,您能否尝试以下操作。在测试您的网址之前,请务必清除浏览器缓存。
RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^Maintenance ?q=pageX [NC,L]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。