我有一個搜索表單發送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