微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

httpd (apache) - 重写页面 -> 查询参数

如何解决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 举报,一经查实,本站将立刻删除。