如何检测mod_rewrite的斜杠

时间:2014-01-19 06:52:48

标签: php apache .htaccess mod-rewrite

我正在写一些mod_rewrite规则,我对其中一个有点困惑。基本上,我想将以下网址pricing/packages/basic/not-for-profit输入pricing-packages-basic-not-for-profit.php

我想我可以用

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)$  $1-$2-$3-$4.php

有没有办法编写一个只会自动计算斜杠的规则?例如,相同的规则适用于上述示例以及pricing/a-package-for-you

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

此代码应该适用于DOCUMENT_ROOT/.htaccess文件:

RewriteEngine On

RewriteRule "^([^/]+)/([^/]+/.+)$" /$1-$2 [N]
RewriteRule "^([^/]+)/([^/]+)$" /$1-$2.php [L]

<强>解释

此处的第一条规则搜索URI中是否至少有2个斜杠,如果是,则先将斜杠转换为连字符。重复此规则,直到URI中至少有2个斜杠。 [N]标志使规则集从顶部重新开始,使用规则集的结果作为起点。

最后当剩下一个斜杠时,执行第二个规则,将斜杠转换为连字符,最后添加.php

<强>更新

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([^/]+)/?$ /$1.php [L]