我想重定向“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
当我三“http://localhost/a.html”它向我显示网页。但当我转为“http://localhost/b.html”apache2 / error_log说“文件不存在:b.html” 是否缺少任何设置以启用rewrite_module?
答案 0 :(得分:5)
问题在于你的RewriteRule。这应该有效:
RewriteEngine On
RewriteRule ^/b.html$ /a.html [L]
^b.html$
)不得包含起始斜杠。[L]
eave处理(不再处理规则)答案 1 :(得分:3)
您是否在Apache配置文件(很可能是httpd.conf)中检查了Alias或VirtualHost部分的指令:
AllowOverride All
我有同样的问题,modrewrite无法正常工作,因为我把它关了:
AllowOverride None
祝你好运。
答案 2 :(得分:1)
你在虚拟主机部分内有它吗?
<VirtualHost *:80>
RewriteEngine On
RewriteRule ^/b.html$ /a.html
</VirtualHost>
答案 3 :(得分:1)
现在有效。不得不做两件事:
将/ etc / apache2 / sites-available / default中的“AllowOverride None”更改为“AllowOverride All”。
将重写规则放在/var/www/.htaccess而不是httpd.conf
我不确定为什么它在httpd.conf中不起作用。但是在完成上述两件事后它才有效。