【发布时间】:2013-11-25 13:19:22
【问题描述】:
我在 htaccess 文件中有下一行:
RewriteCond %{QUERY_STRING} (^|&)grp=([0-9]+)(&|$)
RewriteCond %{QUERY_STRING} (^|&)level=([0-9]+)(&|$)
RewriteRule ^alpe-adria/([a-zA-Z0-9_-]+)$ /site/index.php?d=1&box=1&grp=%1&grpname=$1&level=%2 [L]
原来的网址有这样的代码:
/site/index.php?d=1&box=1&grp=13&grpname=art-culture&level=1
参数d和box是固定的,其他参数grp、grpname和level因页面而异。我想要做的是把这个 URL 改写成这样的状态:
/alpe-adria/art-culture
所以问题是,如何挑出grpname 参数并同时使用所有其他参数,其中两个不固定。我尝试了两个 RewriteCond %{QUERY_STRING} 规则但没有成功。想法是挑出两个参数,然后在原始 URL 中使用它们。另一方面,在原始 URL 中使用一个参数,就像在替代 URL 中一样。再次,我被困住了,我需要你的宝贵帮助。
整个sn-p:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{QUERY_STRING} box=
RewriteRule ^alpe-adria$ /site/index.php [L]
RewriteCond %{QUERY_STRING} d=
RewriteRule ^alpe-adria$ /site/index.php [L]
RewriteCond %{QUERY_STRING} op=
RewriteRule ^alpe-adria$ /site/index.php [L]
RewriteCond %{QUERY_STRING} masterSearch=
RewriteRule ^alpe-adria$ /site/index.php [L]
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^alpe-adria/?$ /site/index.php?box=1&d=3 [L]
RewriteCond %{QUERY_STRING} (?:|.*&)grpname=([^&]*)
RewriteRule ^site/index\.php$ /alpe-adria/%1? [L,R]
【问题讨论】:
标签: php regex apache .htaccess mod-rewrite