使用mod_rewrite或像PHP这样的语言处理友好/干净/漂亮的URL是否更好?

Age*_*rum 9 php apache mod-rewrite friendly-url url-rewriting

我正在开发我的第一个体面的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
Run Code Online (Sandbox Code Playgroud)

2.将所有内容传递给某个处理程序脚本,让它担心细节:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) handler.php?content=$1
Run Code Online (Sandbox Code Playgroud)

显然,这是所有未经测试的"航空代码",但你明白了.

  • 这两种方式中的一种会比另一种方式慢得多吗?据推测,mod_rewrite较慢,因为我将被迫使用.htaccess文件.
  • 这两种方法都有严重的缺点吗?
  • 对于这类事情是否存在"最佳实践",或者每个开发人员都倾向于自己决定什么?我知道WordPress使用选项二(虽然当我调查他们是如何做的时候,它比它的价值更麻烦).

Pas*_*TIN 5

选项1 (.htaccess和几个.php文件)经常被"过去"使用; 现在,我看到选项2 (每个请求通过一个.php文件)使用了更多.

我在选项2中看到的主要优点是:

  • 您可以添加/修改任何类型的URL,而无需更改任何物理文件,如.htaccess
    • 例如,这意味着可以在应用程序的管理部分中配置URL的格式
  • 您只有一个 PHP代码入口点.
    • 这意味着一切顺利index.php:如果您需要为所有请求执行一些代码,请将其放在那里,并且您确定它将始终执行.
    • 例如,这在MVC框架中使用了很多.


几年前,我会选择1; 现在我使用MVC和Frameworks,我总是使用选项2.