Apache重写规则

ash*_*eta 3 apache url-rewriting

我想重定向" http://localhost/b.html " - >" http://localhost/a.html "我为此尝试了RewriteRule.但不知何故,它对我不起作用.

我正在使用apache2,我的httpd.conf包含:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule rewrite_module modules/mod_rewrite.so

RewriteEngine On
RewriteRule ^/b.html$ http://localhost/a.html
Run Code Online (Sandbox Code Playgroud)

当我三" http://localhost/a.html "它显示我的网页.但当我triend" http://localhost/b.html "apache2/error_log说"文件不存在:b.html"是否缺少任何设置以启用rewrite_module?

Pis*_*3.0 5

问题在于你的RewriteRule.这应该工作:

RewriteEngine On
RewriteRule ^/b.html$ /a.html [L]
Run Code Online (Sandbox Code Playgroud)
  1. 规则match(^b.html$)不得包含起始斜杠.(这适用于.htaccess,但不适用于服务器配置)
  2. 如果可能,重写目标应该是相对URI(即在同一主机上)
  3. 规则应该以指令"做什么"结束 - 在这种情况下是[L]eave处理(不再处理规则)

  • 1.是for .htaccess - 当你在.conf中时你需要/ 2.同意3.你不需要这个 - 当它已经是最后一条规则时没有[L] (2认同)