重写和重定向URL而不会导致重定向循环

时间:2017-02-21 19:45:41

标签: .htaccess url redirect mod-rewrite url-rewriting

我有一些网址,我想重写和重定向

mysite.com/search2.php?search=abc应重定向到mysite.com/search/abc

mysite.com/search/abc应显示页面mysite.com/search2.php?search=abc而不更改网址。

我已经编写了重写代码但不能进行重定向而不会导致无限循环。

RewriteEngine On


RewriteRule ^search/([^/]+)?$ search2.php?search=$1 [QSA,NC]
RewriteRule ^search/([^/]+)/([^/]+)/([^/]+)?$ search2.php?search=$1&$2=$3 [L,QSA,NC] 
RewriteRule ^search/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)?$ search2.php?search=$1&$2=$3&$4=$5 [L,QSA,NC] 
RewriteRule ^search/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)?$ search2.php?search=$1&$2=$3&$4=$5&$6=$7 [L,QSA,NC]


RewriteRule ^file/([^/]+)/([^/]+)/([^/]+)/([^/]+)?$ file2.php?$1=$2&$3=$4 [L,QSA,NC]

RewriteRule ^directory/([^/]+)/([^/]+)/([^/]+)/([^/]+)?$ directory2.php?$1=$2&$3=$4 [QSA,NC] 
RewriteRule ^directory/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)?$ directory2.php?$1=$2&$3=$4&$5=$6 [L,QSA,NC]

1 个答案:

答案 0 :(得分:0)

您可以使用此htaccess

RewriteEngine on


RewriteCond %{THE_REQUEST} /search\.php\?search=([^\s]+)\s [NC]
RewriteRule ^ /search/%1? [L,R]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^./]+)/?$ /search.php?search=$1 [L]