htaccess 301重定向动态页面?

时间:2012-03-03 07:03:46

标签: php .htaccess dynamic redirect http-status-code-301

在htaccess中,你如何301重定向动态页面?

例如,如果我想要一个使/get.php?i=1234重定向到/i/1234等规则的规则怎么办?

2 个答案:

答案 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配置。你应该先在测试仪上试一试。