【问题标题】:rewrite and redirect URL without causing in a redirect loop重写和重定向 URL 而不会导致重定向循环
【发布时间】:2017-02-21 19:45:41
【问题描述】:

我有一些 URL 想要重写和重定向

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

并且mysite.com/search/abc应该显示页面mysite.com/search2.php?search=abc而不更改URL。

我已经编写了重写代码,但无法在不导致无限循环的情况下进行重定向。

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]

【问题讨论】:

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


    【解决方案1】:

    你可以使用这个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]
    

    【讨论】:

    • 其他参数呢?
    • 第二次重写
    • 对不起,我没有得到你。你能解释一下当你输入 url 时会发生什么吗?你有什么错误吗?
    • 错误 404,因为内部重定向的重写规则不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    相关资源
    最近更新 更多