我正在重建我的网站并想更改网址 - 我需要让搜索引擎知道,所以我将使用 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。我做错了什么?
我正在重建我的网站并想更改网址 - 我需要让搜索引擎知道,所以我将使用 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。我做错了什么?
试一试,它应该删除.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
将确保将查询字符串附加到其上。
^([^/]+)/?$
这将匹配任何不是 a 的东西,/
直到我们找到 a/
或结束。
因此,如果我们访问domain.com/index
它将捕获索引并在内部重定向到 index.php。