Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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 Htaccess重写用户配置文件和可能的冲突_Php_.htaccess_Mod Rewrite - Fatal编程技术网

Php Htaccess重写用户配置文件和可能的冲突

Php Htaccess重写用户配置文件和可能的冲突,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我需要问一些关于htaccess重定向的问题。我知道有很多关于htaccess、rewrite和pretty-profile-url的问题,但我从来没有找到我问题的真正答案,我希望在你的帮助下我能找到答案 正如您所知,这个漂亮的url规则就像将“mydomain.com/profile.php?username=myuser”更改为“mydomain.com/myuser” 但假设我的登录url有一个重写规则:www.mydomain.com/login 这意味着,若用户试图使用和“登录”完全相

我需要问一些关于htaccess重定向的问题。我知道有很多关于htaccess、rewrite和pretty-profile-url的问题,但我从来没有找到我问题的真正答案,我希望在你的帮助下我能找到答案

正如您所知,这个漂亮的url规则就像将“mydomain.com/profile.php?username=myuser”更改为“mydomain.com/myuser”

但假设我的登录url有一个重写规则:www.mydomain.com/login

这意味着,若用户试图使用和“登录”完全相同的用户名,那个么您如何处理重写时可能出现的冲突

实际上,可能的解决方案可能是最小字符限制,如最小6个字符,但它看起来并不优雅,因为您失去了使用多于6个字符的选项,如“/resetpassword”

当用户选择用户名时,一种“禁止使用的单词”类型的数组控件可能是一种解决方案,但是您需要预见所有不应该使用的可能性

许多大型网站都使用这种重写方法。特别是Facebook对页面和用户同时使用“/username”规则

无论如何,如果有人拥有这种url重定向/重写规则背后的魔力,请在这方面帮助我:)

谢谢


注:我知道还有另一种解决方案,比如“/user/username”,但现在直接指向基本url和缩短完整url越来越流行,我只需要了解这方面的可能性。

你要找的是一种叫做“路由”的东西。它们通常由诸如Zend Framework、Symfony的CakePHP等MVC框架实现

他们基本上做的是将每个请求转发到某个index.php,然后从
$\u服务器['request\u URI']
中找出应该处理请求的php文件

我不建议通过PHP将重写规则放入.htaccess文件中。相反,尝试进入PHP框架。他们为你做艰苦的举重


就我个人而言,我使用Zend框架。但我不会向初学者推荐新版本2。试试ZF1。它实际上非常容易进入。

为什么不在站点的根目录中设置一个登录子目录,其中包含用于用户登录的相关文件?这样,htaccess文件中的重写规则只需处理整个用户重定向内容

实际上,我刚刚开始使用Laravel框架,它有非常棒的特性。实际上,我现在要处理的是路线。我在路由之前使用过滤器来检查是否有一个用户名作为geturi,所以如果成功,它会显示概要文件。但就像我说的,如果有一个用户的用户名是“login”,我的/登录名将被忽略,或者其他情况下的用户配置文件将被忽略。这让我想到,实际上我使用的是laravel php框架,这意味着子目录不是答案(顺便说一句,说htaccess是我的错误)。但实际上这是一种很酷的方法。也许我需要使用路由“/user/login”而不是“/login”。这很有道理:)谢谢你的主意