我有以下.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
我尝试了所有方法但都失败了。
有人能帮助我吗?
答案 0 :(得分:1)
我猜测你的重定向示例中的 SEO友好网址,如果是这种情况,那么你不希望浏览器重定向,而你想要一个内部重定向或别名,例如
RewriteRule ^/?books /category.php?id=3 [L]
RewriteRule ^/?birds /articles.php?id=124 [L]
如果您有许多规则并且可以访问 httpd.conf ,则可能需要考虑重写映射文件和规则。
根据您的评论,如果您想强制用户/抓取工具使用新的网址结构,那么您需要在文件中添加一组额外的重写规则(不是重定向),例如
RewriteCond %{THE_REQUEST} /category\.php [NC]
RewriteCond %{QUERY_STRING} ^id=3 [NC]
RewriteRule ^.* http://%{HTTP_HOST}/books? [R=301,L]
仅供参考:如果您不清楚上述规则的作用,或者您想要更抽象的内容,请考虑以下{{3},请阅读Apache mod_rewrite文档。 }}。