繁体   English   中英

HTACCESS:具有多个变量的动态重写URL

[英]HTACCESS: Dynamic rewrite url with multiple variables

我一直在研究这个问题几天,我想知道是否有人能指出我正确的方向...我试图在我的重写中传递两个变量。

除非给定的url是文件或目录,否则我希望动态重写所有url,如下所示:

example.com/category - > example.com/index.php?p=category
example.com/category/page - > example.com/index.php?p=category&article=page
example.com/category2/page - > example.com/index.php?p=category2&article=page

我很难尝试将以下内容变为动态:
RewriteRule ^category/(.+?)$ ?p=category&article=$1 [L]

我正在尝试这个,但它不起作用:
RewriteRule ^(.+?)/(.+?)$ ?p=$1&article=$2 [L]

...也尝试这个但它也不起作用:
RewriteRule ^(.*)/(.+?)$ ?p=$1&article=$2 [L]

我试图避免使用以下内容使其工作:
RewriteRule ^category2/(.+?)$ ?p=category2&article=$1 [L]

这是完整的代码:

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^category/(.+?)$ ?p=category&article=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ?p=$1 [L]

更新:

这实际上是为我做的:

RewriteRule ^([^/]+)(/([^/]+))? ?p=$1&article=$2 [L]

谢谢!! 安德鲁

我不是专家,但我认为这会为你做到:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ([^/]+)/([^/]+) index.php?p=$1&article=$2         [L]

其中[^/]+匹配除了/之外的所有内容,在htaccess.madewithlove.be上测试时的结果

在此输入图像描述


编辑:

因为我完全忘记了第二个参数是可选的,OP中的大更新几乎完成了它,除了它在parameter2值的开头添加了一个/ ,因为$2正在捕获外部组,而我们需要内部组,如图所示:

在此输入图像描述


而是$3替换$2 ,这应该修复它:

RewriteRule ^([^/]+)(/([^/]+))? ?p=$1&article=$3   [L]

在此输入图像描述

暂无
暂无

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

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