我正在开发我第一个体面的
PHP站点,而对于应用程序中处理清洁/友好/漂亮的URL的“正确的方式”(假设有这样的事情),我有点困惑.
我看到的方式有两个主要选择(我将以简化的社交新闻网站为例):
1.使用mod_rewrite来处理所有可能的URL.这看起来与以下内容相似但不完全相同:
RewriteRule ^article/?([^/]*)/?([^/]*)/?([^/]*) /content/articles.PHP?articleid=$1&slug=$2 RewriteRule ^users/?([^/]*)/?([^/]*) /content/users.PHP?userid=$1&username=$2 RewriteRule ^search/?([^/]*)/? /content/search.PHP?query=$1
2.将所有内容传递给一些处理程序脚本,让它担心细节:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) handler.PHP?content=$1
显然,这是所有未经测试的“航空代码”,但是你得到了点.
>这两种方式之一会比其他方式慢吗?大概mod_rewrite是较慢的,因为我将被迫使用.htaccess文件.
>这些方法之一有严重的缺点吗?
>这种事情有没有一个“最佳实践”,还是每个开发者倾向于自己决定的东西?我知道wordpress使用选项二(尽管它比我的调查究竟是如何做的更麻烦).
选项1(.htaccess和几个.PHP文件)经常用于“过去”;现在,我看到选项2(通过一个.PHP文件的每个请求)使用了更多.
选项2的主要优点是:
>您可以添加/修改任何类型的URL,而无需更改.htaccess等物理文件
>这意味着URL的格式可以在应用程序的管理部分进行配置,例如
>你只有一个入口点你的PHP代码.
>这意味着一切都通过index.PHP:如果你需要一些代码执行所有请求,把它放在那里,你确定它总是被执行.
>例如,使用了很多MVC框架.
几年前,我会选择1;现在我使用MVC和框架,我总是用选项2.