在本土MVC框架中使用PHP URL屏蔽

时间:2014-02-24 22:07:14

标签: php .htaccess

我在PHP中有一个MVC应用程序并且它运行良好,但是我想要一个可以屏蔽URL的功能,例如我有这个URL localhost:1900/index/registerindex.php控制器调用方法register

但是,我只想将localhost:1900/register显示为网址并仍然执行相同操作,从index.php register方法调用,有关如何获取该方法的任何想法?我正在使用Apache和htaccess。

这是htaccess的内容:

RewriteEngine On


php_flag display_errors on
php_value short_open_tag 1
php_value upload_max_filesize 1000M
php_value post_max_size 1000M
php_value max_input_time 300
php_value max_execution_time 300


RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l


RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

2 个答案:

答案 0 :(得分:1)

你应该能够在Apache的.htaccess中重写它,试试:

RewriteRule ^(.*)$ /index/$1/ [L,QSA]

将所有内容重写为索引,或者:

RewriteRule ^register$ /index/register/ [L,QSA]

只重写注册

答案 1 :(得分:0)

您使用的是哪种Web服务器?在apache中,您可以启用mod_rewrite并在.htaccess中设置重写规则。在IIS中,您必须安装IIS Url Rewrite扩展,然后设置几乎与PHP相同的规则。

这是我前一段时间制作的web.config文件中的一个小例子:

<rewrite>
    <rules>
        <rule name="Riscrivi URL index" patternSyntax="ECMAScript" stopProcessing="false">
        <match url="([a-zA-Z0-9_]+).php" />
        <action type="Rewrite" url="index.php/Pages/{R:1}" appendQueryString="true" logRewrittenUrl="false" />
        <conditions logicalGrouping="MatchAny">
        </conditions>
        </rule>
    </rules>
</rewrite>

我在CodeIgniter安装中使用了这个文件,从客户端的角度隐藏了“index.php”,然后将其添加到客户端的网址中以匹配正确的控制器方法