MVC删除" index.php"和" GET"请求来自网址

时间:2016-05-12 16:27:10

标签: php url model-view-controller get

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

http://www.web.com/index.php?controller=access&action=login

问题是,我不喜欢这个网址,我想这样展示:

http://www.web.com/access/login

我在htaccess中读到了一些重定向但没有人按预期工作。有人知道解决方案或最佳做法吗?

如果有帮助,我还会播放我的应用结构:

    app/
      |-- view/
      |   |-- login.php
      |-- base.php

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

    index.php
    .htaccess

感谢先进!

1 个答案:

答案 0 :(得分:0)

我知道有两种解决方案:

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

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

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 [&#39; REDIRECT_URL&#39;]获取网址并路由请求

如果用户请求/a/b.html,您可以$ _SERVER [&#39; REDIRECT_URL&#39;]并使用不同的部分,您应该在2解决方案中使用安全代码

2)直接使用.htaccess文件处理路由,但我建议使用解决方案#1

Options +FollowSymLinks
RewriteEngine on

RewriteRule a/b\.html index.php?controller=$1&action=$2