use*_*729 6 apache .htaccess mod-rewrite
rewriteengine on
rewriterule ^/a/b$ ^/c$
Run Code Online (Sandbox Code Playgroud)
不工作,但是
rewriteengine on
rewritebase /
rewriterule ^a/b$ ^c$
Run Code Online (Sandbox Code Playgroud)
作品.
out*_*tis 11
可能不是RewriteBase使得规则像领先的斜杠一样工作.此外,RewriteRule的第二个参数不是正则表达式.相反,尝试:
RewriteRule ^/?a/b$ c
Run Code Online (Sandbox Code Playgroud)
从.htaccess应用RewriteRule时,将从URL中删除前导斜杠,如果包含该模式,将导致模式失败.通过使用"^ /?"启动模式,它将在主配置文件和每目录配置文件中工作.
阅读详细的mod_rewrite文档,了解重写引擎的工作原理以及RewriteBase的重要性.
编辑:正如mod_rewrite技术细节中所述并在RewriteRule和RewriteBase的文档中描述的那样,在评估每个目录重写规则时,URL已被转换为路径.重写引擎不再具有可以使用的URL.相反,它会删除本地目录前缀(包含.htaccess文件的目录),该前缀以斜杠结尾.例如,假设访问者请求"/var/www/foo/bar/baz.html"并且在"/var/www/foo/.htaccess"中设置了重写规则.在每个规则之前,重写引擎将删除"/ var/www/foo /",使"bar/baz.html"与重写规则匹配.处理规则后,将预先添加本地目录前缀(除非替换以"http://"开头).在处理完所有重写规则之后,重写基础(如果设置)将替换本地目录前缀; 如果没有,则剥离文档根.然后将重写的URL重新注入为子请求.
您使用什么版本的 Apache?RewriteBase
当您从根重写时,应该没有必要。如果你不是,你可能需要它。例如,我的一个博客的当前配置(Apache 2.2)的一部分如下所示,并且有效:
RewriteEngine On
RewriteRule ^/$ /blog/ [R]
RewriteRule ^/wordpress/(.*) /blog/$1 [R]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10118 次 |
最近记录: |