php – 在htaccess中,我想用连字符替换下划线,然后将用户重定向
发布时间:2020-12-13 13:07:14 所属栏目:PHP教程 来源:网络整理
导读:我想将包含下划线的任何请求重定向到相同的URL,但用连字符替换url.我见过很多论坛建议我这样做: (重复这个rewriteRule的增量版本,达到数十亿) rewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$http://example.com/$1-$2-$3-$4 [R=301,L]rewriteRule ^([^_]*)_([
我想将包含下划线的任何请求重定向到相同的URL,但用连字符替换url.我见过很多论坛建议我这样做:
(重复这个rewriteRule的增量版本,达到数十亿) rewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$http://example.com/$1-$2-$3-$4 [R=301,L] rewriteRule ^([^_]*)_([^_]*)_(.*)$http://example.com/$1-$2-$3 [R=301,L] rewriteRule ^([^_]*)_(.*)$http://example.com/$1-$2 [R=301,L] 我目前在php中的解决方案是(工作正常): if(preg_match('/[_]+/',$_SERVER['REQUEST_URI'])){ $redirectUrl = preg_replace('/[_]+/','-',$_SERVER['REQUEST_URI']); header('Location: '. $redirectUrl,TRUE,301); return; } 但是,我宁愿不使用php&而是将它保存在我的htaccess文件中,而不必一遍又一遍地重复第一次重写规则,以便预测每个url可能有多少个下划线.思考?是否有这样的方法来重复增加的rewriteRule? —–编辑—– 我当前的htaccess文件只是标准的WordPress文件,如下所示: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$- [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
请参阅“Next”指令/重写标志,这将导致从第一个规则开始重新评估规则集:
http://httpd.apache.org/docs/current/rewrite/flags.html#flag_n
这样的事情可能有用: RewriteRule (.*)_(.*) $1-$2 [N] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |