自行开发的MVC框架中的PHP URL屏蔽

自行开发的MVC框架中的PHP URL屏蔽,php,.htaccess,Php,.htaccess,我在PHP中有一个MVC应用程序,它运行良好,但我想有一个可以屏蔽URL的功能,例如我有一个URLlocalhost:1900/index/register,它从index.PHP控制器调用方法register 但是,我只想将localhost:1900/注册显示为URL,并且仍然执行相同的操作,从index.php调用注册方法,关于如何获得它,有什么想法吗?我正在使用带有htaccess的Apache 这是htaccess的内容: RewriteEngine On php_flag dis

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

但是,我只想将
localhost:1900/注册
显示为URL,并且仍然执行相同的操作,从
index.php
调用
注册
方法,关于如何获得它,有什么想法吗?我正在使用带有htaccess的Apache

这是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]

您使用的是什么web服务器?在apache中,可以启用mod_rewrite并在.htaccess中设置重写规则。在IIS中,您必须安装IIS Url重写扩展,然后以与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”,并友好地将其添加到客户端指定的URL中,以匹配正确的控制器方法

您应该能够在Apache上的.htaccess中重新编写该文件,请尝试:

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

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

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


要仅重写注册表,您是否在使用apache?是的,我正在将apache与htaccess一起使用。请编辑您的问题以说明路由目前是如何工作的-htaccess文件的内容是什么?这是否与前端控制器连接,以某种方式在“索引/寄存器”中运行适当的控制器?您使用的框架是什么?它是你自己的吗?是的,它是我的框架,我创建的。这个答案大部分是针对IIS的吗?如果是这样的话,回答得很好,但这是针对错误的问题
:)
。如果web服务器(或其他任何东西)有疑问,那么首先确认一下这一点是值得的。对不起,当我写下答案时,您还没有发布有关apache的详细信息。请随意删除。这不是我的问题。:),如果你要求删除,不是我。@Cioroanu:所以你知道,如果你说“它不起作用”,但不提供任何进一步的细节,读者可能会发现很难知道下一步该怎么做。最好将答案作为进一步研究的建议点,而不是逐字逐句地输入精确的内容。所以,在这里,找出为什么这不适合你。考虑打开MODY重写日志,看看引擎盖下面发生了什么,并愿意调试它。此外,您还可以使用一个工具,例如根据url测试.htaccess规则。它与第二个规则一起工作,我没能键入什么,谢谢Daryll:)Daryll,如果我在
RewriteRule^(.+)$index.php?url=$1[QSA,L]之前将
RewriteRule^(.+)$index.php?url=$1[QSA,L]放入.htaccess文件中
第二条
重写规则
不会执行,但我希望两条规则都能执行,我该怎么做?Hi@CioroianuDenis如果您从第一条
重写规则
末尾的标志中删除L,第二条规则也会执行。L标志是最后一个,因此如果该规则匹配,它将不再处理。您可以在以下网址阅读: