2015-03-31 57 views
0

我使用的是MVC微架构的自定义重写规则,我有以下的.htaccess规则:在PHP微MVC框架

Options -MultiViews 
Options -Indexes 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 

这一切改写到index.php URL =(例如,用户/注册/)

在一个名为控制器“档案”我有一个动作“视图”(即需要2个参数),这意味着该URL通常是:

profile/view/arg1/arg2 

什么,我试图做的是来hava一个更友好的网址李柯:

profile/1/profile-name 

,但是当我尝试以下方法:

RewriteRule ^profile/([0-9]+)/(.*)/?$ profile/view/$1/$2 [NC,L] 

它无法正常工作。

换句话说,我只是试图重写原始网址以删除“视图”操作,以便任何人只要输入配置文件ID(arg1)和名称(arg2)即可访问该网址。

回答

1

你实际上在做什么是行不通的,因为你正在翻译为一个友好的网址,但不是index.php,因为你将它定义为L规则,那么它会离开profile/view/1/test,这是不存在的,所以你可以与你的最后一个规则,所以它读取结合起来:

RewriteRule ^profile/([0-9]+)/(.*)/?$ profile/view/$1/$2 [NC] 
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 

而且由于第一场比赛将改变URL,它会以正确的格式第二个规则进行传递。或者你可以只写正确的目标:

RewriteRule ^profile/([0-9]+)/(.*)/?$ index.php?url=profile/view/$1/$2 [NC,L] 

希望有所帮助

+0

实际上你可能想QSA添加到您的个人资料视图链接为好,以防万一,即'资料/ 1 /测试格式= json'然后将映射到'index.php?url = profile/view/1/test&format = json' – 2015-04-01 00:11:35