Regex .htaccess重写规则“;“循环”;
目前,我在.htaccess文件中有这一行,使页面的URL变得“漂亮”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 /作为分隔符 我知道这肯定会是一个巨
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你是对的,我还没有真正想清楚。然而,这个问题的解决办法是什么?