Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修改MVC PHP站点的URI路由?_Php_Apache_Model View Controller_Mod Rewrite_Uri - Fatal编程技术网

如何修改MVC PHP站点的URI路由?

如何修改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文件进行设置吗?如何让它工作?这就是我正在使用

我正在尝试重写一个ASP.NETMVC2站点,我使用PHP/Apache创建该站点是为了好玩

我已经构建了一个基本的MVC框架来服务请求。请求通过index.php?controller=&action=&otherstuff=123123执行

我希望能够通过键入/controller/action?otherstuff=123123来导航我的站点


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]