正则表达式在域名后添加#

时间:2017-03-31 05:34:31

标签: regex apache redirect mod-rewrite url-redirection

我需要正则表达式来更改

中的网址
http://example.com/page > https://example.com/#/page

https://example.com/page > https://example.com/#/page

我创建了这个,我添加了80和443端口虚拟主机apache,第一个重定向工作,但第二个没有

RewriteCond %{REQUEST_URI} !^.*%23.*$
RewriteRule ^(.*)$ https://%{HTTP_HOST}#%{REQUEST_URI} [R=301,L]

2 个答案:

答案 0 :(得分:0)

根据您的要求,您可能会变得更加复杂,但这是一个示例匹配。

^(https?:\/\/[^\/]+)\/?(.*)

您将用$ 1 /#$ 2 /

替换

https://regex101.com/r/mAES1b/3

答案 1 :(得分:0)

您的RewriteCond失败,因为您无法使用rewriteRule操作#(fregment),因为它没有发送到服务器。如果你想重定向到#,你可以使用它:

RewriteCond %{REQUEST_URI} !^/$
RewriteRule ^ /#%{REQUEST_URI} [NE,L,R]

NE标志很重要,否则apache将#转换为%23