mod_rewrite和301重定向在同一个htaccess中

时间:2012-11-14 15:40:01

标签: php .htaccess mod-rewrite

我有以下.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

我尝试了所有方法但都失败了。

有人能帮助我吗?

1 个答案:

答案 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文档。 }}。