在PHP中创建一个Catch-All处理程序?
我希望有一个PHP文件捕获并管理用户访问时发生的事情: http://profiles.mywebsite.com/sometext 某些文本是变化的 例如,它可以是someuser它可以是john,等等。然后我想要一个PHP文件来处理来自该结构的请求 我的主要目标是让特定的PHP文件将我的站点用户重定向到他们相应的配置文件,但他们的配置文件与URL结构不同。我的目标是为我的用户提供一种易于记忆的配置文件URL在PHP中创建一个Catch-All处理程序?,php,url,redirect,catch-all,Php,Url,Redirect,Catch All,我希望有一个PHP文件捕获并管理用户访问时发生的事情: http://profiles.mywebsite.com/sometext 某些文本是变化的 例如,它可以是someuser它可以是john,等等。然后我想要一个PHP文件来处理来自该结构的请求 我的主要目标是让特定的PHP文件将我的站点用户重定向到他们相应的配置文件,但他们的配置文件与URL结构不同。我的目标是为我的用户提供一种易于记忆的配置文件URL 感谢那些愿意回答的人 可以使用.htaccess文件()将url重写为profile
感谢那些愿意回答的人 可以使用.htaccess文件()将url重写为profiles.websites.com/index.php?page=sometext。然后,您可以使用index.php中的sometext执行您想要的操作。您应该使用重写规则 在apache(.htaccess)中,类似以下内容:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L]
</IfModule>
重新启动发动机
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^(.*)$/index.php?url=$1[QSA,L]
然后,在index.php中,您可以在php代码中读取$_GET['url'.如果您还没有听说过MVC,那么您该听它了,从CodeIgniter开始,它最简单且速度非常快,使用默认控制器,您可以拥有类似于
domain.com/usernam/profile
domain.com/usernam/profile/editdomain.com/usernam/inbox
domain.com/usernam/inbox/read/messageid
或在Apache配置文件[虚拟主机或目录指令]或.htaccess文件中明智地使用.htaccess,放入以下行:
Options -MultiViews
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L,NC,QSA]
</IfModule>
选项-多视图
重新启动发动机
重写基/
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L,NC,QSA]
它将静默地将所有不符合有效文件名或目录的传入请求重定向到index.php文件(请确保上述代码中的重写条件)。此外,正如您所看到的,MultiViews
选项也需要被禁用,以便重定向工作-它通常与我放在那里的这两个RewriteCond
冲突
在index.php内部,您可以通过
$\u服务器['REQUEST\u URI']
变量访问REQUEST\u URI
数据。您不应该通过GET
传递任何URI,因为它可能会以不希望的方式污染您的查询字符串数据,因为我们的重写规则中的[QSA]
参数处于活动状态。一个明显的方法是通过404 errorDocument—省去了mod_重写的所有麻烦。谢谢!我要去试试这个!:)嗯,URL缩短网站也使用这种方法吗?不:)这是一个不同的主题。哦,好的,我会在将来某个时候发布,但现在,这应该可以了。:)如果服务器发送404响应代码,搜索引擎可能不会索引页面。因此,如果使用此方法,请确保发送200(确定)响应代码。