我正在重建我的网站并希望更改网址 - 我需要让搜索引擎知道,因此我将使用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
的URL。
(.*)
将在.php
之前捕获任何内容并且标记QSA
将确保将查询字符串附加到它。
^([^/]+)/?$
这将匹配任何不是/
,直到我们找到/
或结束。
所以如果我们访问domain.com/index
它会捕获索引并重定向到index.php内部。
你不能直接在RewriteRule上使用否定,你想要做什么?将php重定向到非php版本? – Prix
重定向/搜索/到search.php - 基本上,我想从URI中删除.php,并且在?之前没有结尾的斜杠。我知道如何做到这一点,但当我添加301时,我一直在使用的功能会中断 - 所以我需要得到一个有301的工作。 – timgavin
如果我的答案适用于您,请告诉我。 – Prix