繁体   English   中英

使用.htaccess中多个参数中的一个参数重写url

[英]Rewriting url with one parameter out of multiple parameters in .htaccess

我在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

参数dbox是固定的,其他参数grpgrpnamelevel随页面而变化。 我想做的就是将此URL重写为以下状态:

/alpe-adria/art-culture

因此,问题在于,如何单选grpname参数并使用所有其他参数,其中两个参数不固定。 我尝试了两个RewriteCond %{QUERY_STRING}规则,但均未成功。 想法是挑出两个参数,然后在原始URL中使用它们。 另一方面,在原始URL中使用一个参数作为替代URL。 同样,我被困住了,我需要您的宝贵帮助。

整个代码段:

<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]

您的问题不太清楚,但是您可以使用如下规则,使您可以从查询字符串中的任何位置捕获所有这些parameters grp, grpname and level

RewriteEngine on

RewriteCond %{THE_REQUEST} \s/+site/index\.php\?d=1&box=1&grp=([^&]*)&grpname=([^&]*)&level=([^&]*) [NC]
RewriteRule ^ /alpe-adria/%2/%1/%3? [L,NE,R=302]

RewriteRule ^alpe-adria/([^/]+)/([^/]+)/([^/]+)/?$ /site/index.php?d=1&box=1&grp=$2&grpname=$1&level=$3 [L,QSA]

您是否真的有来自浏览器的非SEO非SEF URI? 将其转换为“ / alpe-adria /艺术文化”之类的SEF形式有什么意义? 除非以这种方式实际设置了新目录结构,否则您将尝试将旧的非SEO / SEF URI与新布局进行匹配。

假设您实际上有传入的'/ alpe-adria / *'URI,那么您不会将原始URL重写为/alpe-adria/art-culture 您正在使用.htaccess将/alpe-adria/art-culture (来自浏览器)重写为PHP和服务器可以消化的原始格式。 请使用正确的术语。 .htaccess对出站 URI不执行任何操作。

您说的是/alpe-adria/是固定的,并且您有一个“搜索引擎友好的”组名(例如“艺术文化”)。 您想将“艺术文化”映射到index.php的URI中吗? 我看不到您从传入的URI中获取grplevel条目的位置。 您要做的最好的事情就是拥有许多查找条目:匹配“ art-culture”,输出所需的完整URI。 匹配其他内容,输出其他所需的完整URI。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM