我有一个搜索表单发送GET请求到一个名为search.php的页面。我已经在我的htaccess文件中重写了一些规则,这些规则将某些事情(比如/ search)重写到各自的页面。我只是想采取search.php?q =查询并将其重写到/ search/query。简单的htaccess重写/重定向到搜索页面
这是我的。
RewriteRule search.php?q=(.*) /search/$1
RewriteRule search/(.*) search.php?q=$1 [nc]
我在做什么错了?
下面是完整的文件
ErrorDocument 404 /index.php?p=404
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^images/.*\.jpg$ /images/default.jpg [L]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?wghandcrafted.com/.*$ [NC]
RewriteRule \.(gif|jpg|jpeg|psd|js|swf|flv|png)$ /feed/ [R=302]
RewriteRule ^(products|blog|feed|search|checkout|checkout)$ $1.php [nc]
RewriteRule products/cat/(.*)$ products.php?type=cat&cat=$1 [nc]
RewriteRule products/(.*)$ products.php?type=single&product=$1 [nc]
RewriteRule blog/(.*) blog.php&post=$1 [nc]
RewriteRule feed/(.*) feed.phptype=$1 [nc]
RewriteRule search\.php?q=(.*)$ /search/$1 [R=301,L]
RewriteRule search/(.*)$ search.php?q=$1 [NC]
仍然无法正常工作......任何其他建议?我将发布我的完整.htaccess文件。 – watzon
@ sun-tzu:看修改后的答案。 'RewriteCond%{REQUEST_FILENAME}!-f'行是您的问题,或者更具体地说,是放置。 –
我很抱歉地说..但RewriteRule不能用这种方式查询字符串 - 这不会工作'search \ .php?q =(。*)$'。 RewriteRule模式将只与URL的路径部分匹配。即使它会......你极有可能得到一个重写循环(这就是mod_rewrite和.htaccess的工作方式) – LazyOne