Regex .htaccess重写规则“;“循环”;

Regex .htaccess重写规则“;“循环”;,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,目前,我在.htaccess文件中有这一行,使页面的URL变得“漂亮” RewriteRule ^([A-Za-z0-9-]+)/$ /directory/?type=page&title=$1 [L] 但是,我有时会有子页面(/page/sub-page/sub-page/),但这一行只支持一个级别(/page/) 我如何更改此代码以支持子页面(任意数量),并使标题变量类似于: &title=page/sub-page/sub-page /作为分隔符 我知道这肯定会是一个巨

目前,我在.htaccess文件中有这一行,使页面的URL变得“漂亮”

RewriteRule ^([A-Za-z0-9-]+)/$ /directory/?type=page&title=$1 [L]
但是,我有时会有子页面(
/page/sub-page/sub-page/
),但这一行只支持一个级别(
/page/

我如何更改此代码以支持子页面(任意数量),并使
标题
变量类似于:

&title=page/sub-page/sub-page
/作为分隔符

我知道这肯定会是一个巨大的帮助:

但是,由于我对regex和mod rewrite缺乏了解,我不知道如何使它与我已经拥有的东西正常工作。

尝试以下方法:

AllowEncodedSlashes On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([/a-z0-9-]+)/?$ /directory/?type=page&title=$1 [NC,B,L]

不要因为
NC
标志而担心
A-Z

在做了一些regex研究和测试之后,似乎这就是我问题的答案:

RewriteRule ^(([a-zA-Z0-9-]+)/(([a-zA-Z0-9-]+)\/?)+)$ /directory/?type=page&title=$1 [L]

我修改了以前的代码,允许支持多个子目录。然后我将其放入一个捕获组,并将该数据放入
title
变量。

为什么要使用
/\uu/
而不仅仅是常规的
/
?为什么不在你的脚本中进行替换,而不是试图让mod_rewrite做一些不该做的事情呢?正如Jon所写的,你需要澄清
&title=page/sub page/sub page
?@JonLin你是对的,我还没有真正想清楚。然而,这个问题的解决办法是什么?