如何修改MVC PHP站点的URI路由?
我正在尝试重写一个ASP.NETMVC2站点,我使用PHP/Apache创建该站点是为了好玩 我已经构建了一个基本的MVC框架来服务请求。请求通过index.php?controller=&action=&otherstuff=123123执行 我希望能够通过键入/controller/action?otherstuff=123123来导航我的站点如何修改MVC PHP站点的URI路由?,php,apache,model-view-controller,mod-rewrite,uri,Php,Apache,Model View Controller,Mod Rewrite,Uri,我正在尝试重写一个ASP.NETMVC2站点,我使用PHP/Apache创建该站点是为了好玩 我已经构建了一个基本的MVC框架来服务请求。请求通过index.php?controller=&action=&otherstuff=123123执行 我希望能够通过键入/controller/action?otherstuff=123123来导航我的站点 webhost支持mod_rewrite,我可以使用index.php脚本所在位置的.htaccess文件进行设置吗?如何让它工作?这就是我正在使用
webhost支持mod_rewrite,我可以使用index.php脚本所在位置的.htaccess文件进行设置吗?如何让它工作?这就是我正在使用的。框架解析路由
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule .* index.php/$0 [PT]
</IfModule>
重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_URI}=/图标文件
重写规则。*index.php/$0[PT]
这就是我正在使用的。框架解析路由
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule .* index.php/$0 [PT]
</IfModule>
重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_URI}=/图标文件
重写规则。*index.php/$0[PT]
试试这个:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([^/]+)/([^/]+)?otherstuff=(.*)^ index.php?controller=$1&action=$2&otherstuff=$3 [L]
试试这个:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([^/]+)/([^/]+)?otherstuff=(.*)^ index.php?controller=$1&action=$2&otherstuff=$3 [L]
我想我建议你使用这个指令。这意味着,如果没有传递查询字符串,您的重写将继续正常工作
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([^/]+)/([^/]+)$ index.php?controller=$1&action=$2 [qsa,last]
这样,如果您决定以后使用更多的查询字符串,只需继续—它将传递它们
我想我建议您使用该指令。这意味着,如果没有传递查询字符串,您的重写将继续正常工作
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([^/]+)/([^/]+)$ index.php?controller=$1&action=$2 [qsa,last]
这样,如果您决定以后使用更多的查询字符串,只需继续—它将传递它们
G谢谢。我对你发布的规则做了一个小小的调整,使它工作起来了<代码>重写规则^(.....^/]*)/(.....^/]*)[/]?$/index.php?控制器=$1和操作=$2[L,QSA]谢谢。我对你发布的规则做了一个小小的调整,使它工作起来了<代码>重写规则^(.[^/]*)/(.[^/]*)[/]?$/index.php?控制器=$1和操作=$2[L,QSA]