0

我对在 Apache 上使用 mod_rewrite 引擎很陌生,尽管我对正则表达式有一些基本的了解。但是,我很困惑,并且对无法正常工作的重定向感到非常中风。

这是我的 .htaccess 文件中的相关代码:

RewriteCond %{REQUEST_URI} ^/vacations/([^/]*)(.*)$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

当我重定向时,2 美元中没有任何内容。$0 和 $1 都包含整个匹配的字符串。例如,如果原始 URL 是 /vacations/asia/rar,我将被重定向到http://www.example.com/vacations/asia/rar而不是 www.example.com/asia。

任何帮助将不胜感激。

4

1 回答 1

0

这是因为RewriteRule backreferences当您应该使用RewriteCond 反向引用(%1) 时,您正在使用 ($1):

RewriteCond %{REQUEST_URI} ^/vacations/([^/]*)(.*)$ [NC]
RewriteRule ^(.*)$ http://www.example.com/%1 [R=301,L]
于 2013-11-02T01:57:34.297 回答