我在PHP中有一个MVC应用程序并且它运行良好,但是我想要一个可以屏蔽URL的功能,例如我有这个URL localhost:1900/index/register
从index.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]
答案 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”,然后将其添加到客户端的网址中以匹配正确的控制器方法