使用mod_rewrite来回重写URL

时间:2013-01-12 17:15:36

标签: php apache .htaccess mod-rewrite url-rewriting

也许这似乎是一个非常简单的问题,我的网站的网址写得非常好,所以我想重写它们。所以我准备激活mod_rewrite。问题如下:

假设我的网址从site_url/index.php?page=mypage&type=mytype切换到site_url/mypage/mytype,如果刷新页面会发生什么情况,是否有必要在.htaccess文件中插入进行重写的逆转过程?

2 个答案:

答案 0 :(得分:2)

您需要重定向和重写的组合。 URL重写过程的草案大纲是:

  • 如果网址包含.php,则301/302会将请求重定向到其SEO友好版本。这将更改浏览器地址栏中的地址。
  • 如果请求了SEO友好URL,请将其重写为PHP版本。这不会更改浏览器地址栏中的地址。

这是一个非常基本的重写规则示例,可以执行上述两种操作:

#
# redirect /index.php?page=somepage&type=sometype to friendly url
# 
RewriteCond %{THE_REQUEST} /index\.php
RewriteCond %{QUERY_STRING} page=(\w+)&type=(\w+)
RewriteRule ^index\.php$ /%1/%2? [R,L]

#
# rewrite /somepage/sometype to index.php
# 
RewriteRule ^(\w+)/(\w+)$ index.php?page=$1&type=$2

答案 1 :(得分:0)

在.htaccess中,你应该做一个映射的前锋......

^/(mypage)/(mytype) to index.php?page=$1&type=$2

但反过来应该保持不变。因此,对site_url/index.php?page=mypage&type=mytype的直接请求将按原样传递。

因此,刷新不会改变任何事情。