【问题标题】:Using mod rewrite to change query text使用 mod rewrite 更改查询文本
【发布时间】:2016-12-16 06:33:37
【问题描述】:

我是 Apache 的一个极端新手,但我非常努力并尽我所能去学习。但是,我遇到了一个问题,尽管我已经进行了广泛的搜索(过去 3 个多小时尝试了不同的方法以使其正常工作,哈哈),但我仍然无法找到与我完全一样的东西需要。但是,(我认为)对于比我更精通的人来说,这应该是一个非常简单的问题。

我需要的是一个简单的 RewriteRule,它将采用 URL (https://sample.example.com/login.htm?page=%2F),并在访问时将其重定向/更改为“https://sample.example.com/login.htm?page=%2Fui2.htm)。我尝试过重写规则、重定向、条件等....但我所做的一切都没有完美地到达那里。我觉得我真的,真的,真的很接近,但我不能完全跨过最后一步。这是我在这个网站匹配的虚拟主机文件中拥有的内容:

<IfModule mod_ssl.c>

<VirtualHost *:443>

ServerName sample.example.com
ServerAdmin webmaster@localhost


SSLCertificateFile /etc/letsencrypt/live/sample.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/sample.example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf


RewriteEngine on
RewriteRule "^/login\.htm$" "/login.htm?page=%2Fui2.htm" [R,L]


ProxyRequests Off
ProxyPreserveHost On
<Location />
        ProxyPass http://192.168.x.x:38374/
        ProxyPassReverse http://192.168.x.x:38374/
</Location>

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined


</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

</IfModule>

(上面的内部IP和域名明显被屏蔽了)

我知道重写的输入文本可以肯定地工作,只是重写的部分失败了。一切正常,除了它将我重定向到https://sample.example.com/login.htm?page=Fui2.htm(即它删除了“%2”部分)。这就是我的问题。

【问题讨论】:

  • 1 次尝试。保持原样并使用 B 和 NE 标志。 [NE,B,R,L]

标签: regex apache ubuntu mod-rewrite webserver


【解决方案1】:

尝试使用\s 转义%2 部分

【讨论】:

  • 我尝试将“%2”更改为“\%2”,但没有成功...您是说尝试“\%\2”吗?
  • @ohlin5 尝试\%2 并从正则表达式字符串和替换字符串中删除双引号。
  • 我已经尝试了其他海报的建议,看起来他一直在编辑它 :) 无论如何都没有工作...最近的一个重定向到 sample.example.com/login.htm?page=Fui2.htm
  • 好的,好消息是修复了 URL...坏消息是它仍然无法加载,因为我现在陷入重定向循环(浏览器说网站重定向太多次并引发错误) .有什么想法?
  • 我明白了!!! "RewriteCond %{QUERY_STRING} ^page=%2F$" (在重写的正上方,没有双引号)成功了!非常感谢您的帮助!
猜你喜欢
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-28
  • 2012-12-19
相关资源
最近更新 更多