1

我有以下 .htaccess 文件:

RewriteEngine on
Options +FollowSymLinks

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule (.*)$ ./page.php?name=$1

我还有大约 20 个不同的静态地址,我想做 301 重定向。

它应该看起来像:

Redirect 301 http://www.example.com/category.php?id=3 http://www.example.com/books
Redirect 301 http://www.example.com/articles.php?id=124 http://www.example.com/birds

我尝试了所有方法并失败了。

有人可以帮助我吗?

4

1 回答 1

1

我猜你在重定向示例中的一组SEO友好URL之后,如果是这种情况,那么你不想要浏览器重定向,而是你想要一个内部重定向或别名,例如

RewriteRule ^/?books /category.php?id=3    [L]
RewriteRule ^/?birds /articles.php?id=124  [L]

如果您有许多规则并且可以访问httpd.conf,您可能需要考虑重写映射文件和规则。

根据您在下面的评论,如果您想强制用户/爬虫使用新的 URL 结构,那么您需要在文件中添加一组额外的重写规则(而不是重定向),例如

RewriteCond %{THE_REQUEST}      /category\.php     [NC]
RewriteCond %{QUERY_STRING}     ^id=3  [NC]
RewriteRule ^.*                 http://%{HTTP_HOST}/books?   [R=301,L]

仅供参考:如果您不清楚上述规则的作用,或者如果您想要更抽象的东西,请考虑以下帖子,Apache mod_rewrite文档值得一读。

于 2012-11-14T16:33:37.147 回答