.htaccess rewriterule" loop"

时间:2014-07-08 21:22:12

标签: regex apache .htaccess mod-rewrite

我目前在.htaccess文件中有这一行,使网页“非常”。

RewriteRule ^([A-Za-z0-9-]+)/$ /directory/?type=page&title=$1 [L]

但是,我有时会有子页面(/page/sub-page/sub-page/),但这一行只支持一个级别(/page/)。

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

&title=page/sub-page/sub-page

/ 是分离者。

我知道这绝对是一个巨大的帮助:

RewriteRule loop in .htaccess not working

然而,由于我对正则表达式和mod重写缺乏了解,我不知道如何使它与我已有的正常工作。

2 个答案:

答案 0 :(得分:0)

试试这个:

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]

由于A-Z标志,不要担心NC

答案 1 :(得分:0)

在做了一些正则表达式研究并做了一些测试后,似乎这就是我的问题的答案:

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

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