我正在使用这样的东西......
RewriteRule here/(.*) http://www.there.com/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
但无法让它发挥作用
所以我用这个......
redirect 301 /here http://www.there.com
Run Code Online (Sandbox Code Playgroud)
它工作得很好.
有人可以解释这个区别吗?你需要两个吗?
另外......如何从重定向中排除路径?
喜欢...重定向301所有...
redirect 301 /here http://www.there.com
Run Code Online (Sandbox Code Playgroud)
但
/here/stayhere.html
Run Code Online (Sandbox Code Playgroud)
谢谢
Ple*_*and 16
RewriteRule由Apache的mod_rewrite处理,而Redirect由mod_alias处理.不,你不需要两者.
你的RewriteRule(使用正则表达式)将不匹配/here(但会匹配这样的路径/here/foo.html)因为它正在寻找紧接着的斜杠.您可以使用问号使其成为可选项:
RewriteRule ^here(/?.*) http://www.there.com$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
现在,这将与您的重定向具有相同的效果.可以添加RewriteCond以排除某些路径:
RewriteCond $0 !/here/stayhere\.html
Run Code Online (Sandbox Code Playgroud)
请注意,某些服务器默认情况下没有打开mod_rewrite.如果添加RewriteEngine on到您的配置不能解决问题,并且您无法打开mod_rewrite,至少mod_alias提供了RedirectMatch指令,这可能足够好:
RedirectMatch 301 ^/here(?!/stayhere\.html)(/?.*) http://www.there.com$1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15626 次 |
| 最近记录: |