我正在重建我的网站并想更改网址 - 我需要让搜索引擎知道,所以我将使用 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。