使用正则表达式将URL替换为斜线

时间:2012-08-24 14:58:55

标签: php regex .htaccess

我正在使用一个使用URL的前端控制器,如下所示:

http://www.domain.com/index.php?action=main.Main, 其中'main'是模块,'Main'是动作。

对于URL重写,我在htaccess中使用这一行:

RewriteRule ^([^/]+)\.html$ index.php?action=$1 [QSA] 

这导致http://www.domain.com/main.Main.html

现在,如何用斜杠替换模块和动作之间的点,以便结果如下所示: http://www.domain.com/main/Main

3 个答案:

答案 0 :(得分:2)

然后试试这个:

RewriteRule ^(.*)/(.*)$ index.php?action=$1.$2 [QSA]

答案 1 :(得分:1)

试试这个:

RewriteCond %{REQUEST_URI} \.html$
RewriteRule ^(.*)/(.*)\.html$ /$1.$2.html [L]

RewriteCond %{REQUEST_URI} \.html$
RewriteCond %{REQUEST_URI} !/.+/
RewriteRule ^([^/]+)\.html$ index.php?action=$1 [L,QSA] 

这将收到如下请求:http://www.domain.com/main/something/action/Main.html并将URI重写为:/index.php?action=main.something.action.Main

答案 2 :(得分:0)

RewriteRule ^(.*)/(.*)$ index.php?module=$1&action=$2 [QSA]