首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC从url中删除"index.php“和"GET”请求

MVC从url中删除"index.php“和"GET”请求
EN

Stack Overflow用户
提问于 2016-05-13 00:27:10
回答 1查看 859关注 0票数 1

我现在正在用一个简单的登录视图构建一个php应用程序。我使用url中的两个GET参数(控制器和操作)来路由视图:

代码语言:javascript
复制
http://www.web.com/index.php?controller=access&action=login

问题是,我不喜欢这个url,我想这样显示它:

代码语言:javascript
复制
http://www.web.com/access/login

我在htaccess中读到了一些重定向,但没有人能像预期的那样工作。有人知道这样做的解决方案或最佳实践吗?

如果有帮助,我还会告诉你我的应用程序结构:

代码语言:javascript
复制
    app/
      |-- view/
      |   |-- login.php
      |-- base.php

    src/
      |-- controller/
      |   |-- AccessController.php
      |-- router.php

    index.php
    .htaccess

感谢你的进阶!

EN

回答 1

Stack Overflow用户

发布于 2016-05-13 00:45:45

我知道有两种解决方案:

1)将所有请求重定向到该文件上的主index.php和路由模式。

创建.htaccess文件,并将此代码用于将所有urls重定向到index.php

代码语言:javascript
复制
Options +FollowSymLinks
RewriteEngine on

RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw|xml|jpg|ajx))$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

在这种情况下,所有请求都重定向到index.php,您可以从$_SERVER' redirect _ url‘获取URL并路由请求

如果用户请求/a/b.html,您可以从不同部分使用$_SERVER‘’REDIRECT_URL‘,您应该在2个解决方案中使用安全代码

2)直接使用.htaccess文件处理路由,但我推荐方案1

代码语言:javascript
复制
Options +FollowSymLinks
RewriteEngine on

RewriteRule a/b\.html index.php?controller=$1&action=$2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37192567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档