我正在写一些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
感谢您的帮助!
答案 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]