自行开发的MVC框架中的PHP URL屏蔽
我在PHP中有一个MVC应用程序,它运行良好,但我想有一个可以屏蔽URL的功能,例如我有一个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
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标志是最后一个,因此如果该规则匹配,它将不再处理。您可以在以下网址阅读: