Php .htaccess包含url的旧部分
我正在尝试为旧的url结构创建一个排序重定向到新的url结构 旧url结构:Php .htaccess包含url的旧部分,php,.htaccess,Php,.htaccess,我正在尝试为旧的url结构创建一个排序重定向到新的url结构 旧url结构: index.php?page=protocols&id=1 /protocols/view/1 新的url结构: index.php?page=protocols&id=1 /protocols/view/1 这是我的.htaccess,但它没有正确重定向 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{THE_REQU
index.php?page=protocols&id=1
/protocols/view/1
新的url结构:
index.php?page=protocols&id=1
/protocols/view/1
这是我的.htaccess,但它没有正确重定向
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{THE_REQUEST} \s/+index\.php\?page=protocols&id=([^&\s]+) [NC]
RewriteRule ^ \/protocols\/view\/%1 [R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
重新启动发动机
RewriteCond%{THE_REQUEST}\s/+index\.php\?page=protocols&id=([^&\s]+)[NC]
重写规则^\/protocols\/view\/%1[R,L]
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
它正在重定向到/protocols/view/1?page=protocols&id=1
如何使其正确重定向?您需要在规则中使用
QSD
“查询字符串丢弃”标志,以从新URL中删除附加字符串
改变
RewriteRule ^ \/protocols\/view\/%1 [R,L]
到
如果您的服务器版本不支持QSD
,则只需在规则的目标url末尾添加一个空问号即可
RewriteRule ^ \/protocols\/view\/%1? [R,L]
也不需要逃避替换中的斜杠。