在htaccess中,你如何301重定向动态页面?
例如,如果我想要一个使/get.php?i=1234
重定向到/i/1234
等规则的规则怎么办?
答案 0 :(得分:1)
您可以像在此代码中一样使用mod_rewrite重定向:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^(i)=([^&]+)(&|$) [NC]
RewriteRule ^get\.php$ %1/%2? [L,R=301,NC]
答案 1 :(得分:0)
使用RedirectMatch directive尝试regular expression。这取决于mod_alias,因此可能始终启用。你也可以使用mod_rewrite,但它可能有点过分。替换可能包含$ n形式的引用:
RedirectMatch 301 ^/get\.php\?i=([0-9]+)$ /i/$1
您可以想象,$1
是引用到匹配在括号#1 中的内容。你可以有很多参考文献:
RedirectMatch 301 ^/get\.php\?i=([0-9]+)&y=([0-9]+)$ /i/$1/$2/
您可以使用在线regular expression tester详细说明您的apache配置:如果我将^/get\.php\?i=([0-9]+)&y=([0-9]+)$
放入" Regexp"输入,以及"主题字符串中的/get.php?i=12&y=24
"输入,然后点击"显示匹配"它显示:
Match at position 0:
/get.php?i=12&y=24
12 # first reference available
24 # second reference available
如果您的正则表达不在测试人员中工作,则他们不太可能使用Apache配置。你应该先在测试仪上试一试。