Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中创建一个Catch-All处理程序?_Php_Url_Redirect_Catch All - Fatal编程技术网

在PHP中创建一个Catch-All处理程序?

在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

我希望有一个PHP文件捕获并管理用户访问时发生的事情:

http://profiles.mywebsite.com/sometext

某些文本是变化的

例如,它可以是someuser它可以是john,等等。然后我想要一个PHP文件来处理来自该结构的请求

我的主要目标是让特定的PHP文件将我的站点用户重定向到他们相应的配置文件,但他们的配置文件与URL结构不同。我的目标是为我的用户提供一种易于记忆的配置文件URL


感谢那些愿意回答的人

可以使用.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/edit
domain.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(确定)响应代码。