我正在尝试将我网站上的所有以下网址重定向到新版本。这是目标:
之前(请注意,没有'.php')
https://example.com/view?username=asdf1234
REDIRECTS TO(使用'.php'并在'工具'文件夹中)
https://example.com/tool/view.php?username=asdf1234
我尝试了几个例子,但无法弄明白。这是我最好的猜测
RewriteEngine On
RewriteRule ^/view\?username=(.+) /tool/view.php?%1 [L,R=301]
添加
RewriteEngine On
RedirectMatch ^/view(.*)$ https://example.com/tool/view.php$1
成功重定向,但它是302重定向。当我添加[L,R = 301]时,它给出了500错误。
答案 0 :(得分:1)
你可以尝试一个否定的断言:
RewriteEngine On
RewriteCond "%{REQUEST_URI}" ^/tool/?.*$
RewriteRule ".?" "-" [S=1]
RewriteRule "^/(.*)$" "/tool/$1?%{QUERY_STRING}" [L,R=301]
/tool/(TheUrlYouVisited.whatever)
因此,如果URL不以/ tool开头,则不会跳过第三条规则,因此您可以捕获所有重定向。
作为测试,您还可以添加一个简单的:
RedirectMatch ^/view(.*)$ http://www.example.com/tool/view$1
如果这不起作用,你就会知道其他事情正在发生。