htaccess重写规则,旧URL到新

时间:2011-09-29 08:47:02

标签: .htaccess mod-rewrite

对SO人员有点帮助。

我目前拥有的内容(基于我用于不同类型网址的一些代码)。

我希望第一个网址重定向到第二个网址,之后不再包含查询字符串

这是我到目前为止所做的事情。

RewriteRule ^(page.php?id=missionstatement+)/?$ http://example.com/why/mission-statement [R=301,L]
RewriteRule ^(page.php?id=ofsted+)/?$ http://example.com/how/ofsted-report [R=301,L]
RewriteRule ^(page.php?id=governingbody+)/?$ http://example.com/governors [R=301,L]

2 个答案:

答案 0 :(得分:2)

以下是规则(将重定向1个网址):

RewriteCond %{QUERY_STRING} ^id=whatever
RewriteRule ^page\.php$ http://%{HTTP_HOST}/how/somehow? [R=301,L]
  1. 此规则旨在放在网站根文件夹中的.htaccess中。如果放在其他地方,可能需要进行一些小的调整。

  2. 我使用了%{HTTP_HOST} - 这将重定向到与请求的URL相同的域。如果域名必须不同,请将其替换为确切的域名。

  3. 新网址末尾的?将删除现有的查询字符串。

答案 1 :(得分:0)

嗨!

给它一个旋转:

#check mod_rewrite is enabled
<IfModule mod_rewrite.c>

#enable mod rewrite
RewriteEngine On

#set working directory
RewriteBase /

#force trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [R=301,L]

#bootstrap index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^page.php\?id=(.*)$ http://www.willans.com/page.php/$1 [R=310,L]

#end mod rewrite check
</IfModule>

自从我完成任何网络开发以来已经有一段时间了,但至少应该朝着正确的方向发展;)