.htaccess检查特定的查询字符串属性

时间:2012-04-19 15:05:12

标签: .htaccess query-string

我们正在更改网站'结构和旧网址看起来像:

http://www.website.co.uk/pages.php?PageId=7

新网址是:

http://www.website.co.uk/niceurl

我有这个.htaccess随我使用的CMS一起使用,因此它的核心功能无法以不同的方式工作。

<IfModule mod_rewrite.c>

Options +FollowSymLinks

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f

RewriteRule ^(.*)$ index.php/$1

</IfModule>

真正想要做的是检查是否收到了pages.php,如果是,请忽略该规则:

RewriteRule ^(.*)$ index.php/$1

然后在此规则之后执行以下操作:

RewriteRule ^PageId=7(.*)$ /niceurl [R=301] 

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

解决方案:

<IfModule mod_rewrite.c>

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f

RewriteCond %{QUERY_STRING} !(PageId=7)

RewriteRule ^(.*)$ index.php/$1

RewriteCond %{QUERY_STRING} PageId=7
RewriteRule .* /niceurl? [R=302,L]

</IfModule>