0
我目前正在開發Web應用程序,並在確定路由請求的htaccess規則時卡住了。用於Web應用程序的3部分路由
我想是這樣的(M =模塊,=動作,O =動作的對象):
www.domain.com/m/a/o
對於一般請求我打算有此(o是空的):
www.domain.com/users/login
to: www.domain.com/index.php?m=users&a=login
www.domain.com/users/logout
to: www.domain.com/index.php?m=users&a=logout
但對於站點範圍內的路由我想:
www.domain.com/projects/show/123
to: www.domain.com/index.php?m=projects&action=show&object=123
一般來說,有我想要爲哪一個規則本身我的.htaccess重定向如下:
www.domain.com/EMPTY
to: www.domain.com?index.php
www.domain.com/([^-]a-z0-9)
to: www.domain.com?index.php?m=$1
www.domain.com/([^-]a-z0-9)/([^-]a-z0-9)
to: www.domain.com?index.php?m=$1&a=$2
www.domain.com/([^-]a-z0-9)/([^-]a-z0-9)/([^-]a-z0-9)
to: www.domain.com?index.php?m=$1&a=$2&o=$3
你能幫忙嗎?
我已經試過這樣的事情,但沒有任何東西比域本身長:
RewriteRule ^/([^-]a-z0-9+)$ index.php?m=$1 [L]
RewriteRule ^/([^-]a-z0-9+)/([^-]a-z0-9+)$ index.php?m=$1&a=$2 [L]
RewriteRule ^/([^-]a-z0-9+)/([^-]a-z0-9+)/([^-]a-z0-9+)$ index.php?m=$1&a=$2&o=$3 [L]
你正在做這個可怕的錯誤。如果你希望你的mod_rewrite是靈活的,你需要實現一個前端控制器,然後爲所有請求添加簡單規則,比如'RewriteRule ^(。*)$ index.php/$ 1 [QSA,L]'。 < - Zend2和Symfony2是如何做到這一點的 – Yang
您的意思是爆炸REQUEST_URI嗎? – jakubplus
1)你需要一個路由器(它決定了請求URI是否匹配)2)分派器(根據路由匹配建立實例)。不,爆炸在這裏效率不高,因爲URI也可能包含變量。說它可能是'/ article /(:id)'。唯一有效的方法是正則表達式,而不是'explode()' – Yang