我正在重建我的网站并希望更改网址 - 我需要让搜索引擎知道,所以我将使用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.我做错了什么?
答案 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。