格式化搜索网址

时间:2013-08-31 23:43:36

标签: .htaccess mod-rewrite

我正在重建我的网站并希望更改网址 - 我需要让搜索引擎知道,所以我将使用301重定向。

我的页面位于http://site.com/search.php

我想使用此网址

http://site.com/search?s=foo&bar=bat&so+on&so+forth

我的rewriteCond是

RewriteRule !^search search.php [R=301,L]

我得到了404.我做错了什么?

1 个答案:

答案 0 :(得分:1)

尝试一下,它应删除.php并重定向到search并显示php的内容:

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.*)\.php [NC]
RewriteRule ^ /%1 [R=301,QSA,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^([^/]+)/?$ $1.php [L]

在第一条规则中,我们会检查请求是否存在.php,如果是,我们会将其重定向到没有.php的网址。

(.*)将捕获.php之前的所有内容,并且标记QSA将确保将查询字符串附加到其中。

^([^/]+)/?$这将匹配任何不是/的内容,直到我们找到/或结束。

因此,如果我们访问domain.com/index,它将捕获索引并在内部重定向到index.php。