对于URL重写,请使用.htaccess或PHP来确定使用的内容?

ede*_*eye 5 php .htaccess url-rewriting

使用URL重写进行美化时,是否有任何关于是在PHP脚本中进行内容计算还是将其硬编码到.htaccess文件中的想法?

例如,WP将简单规则添加到.htaccess文件中

RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Run Code Online (Sandbox Code Playgroud)

它将所有内容定向到index.php页面.然后它有一个PHP脚本(canonical.php)解析$ _SERVER ['REQUEST_URI']然后找出实际上拉的内容.

它不是使用PHP来处理所有这些,而是​​可以直接输入.htaccess文件,从URL传递查询项,类似于:

RewriteRule ^products/([0-9][0-9])/$ /productinfo.php?prodID=$1 
Run Code Online (Sandbox Code Playgroud)

有谁知道这两种方法的优点/缺点?我认为PHP方法提供了更多的灵活性,但我可能错了.我不知道哪个有更多的开销.

Ale*_*nov 2

我的观点是 PHP 处理要好得多。唯一可能的缺点是它可能会更慢,但也不会太慢,在整个页面生成时间中您不会注意到任何差异。但缺点是:

  1. 如果您的网站不断增长,您每次都必须在 .htaccess 中提供新的规则,这很不方便。例如,如果您想向某个脚本调用添加一个 GET 参数,则必须再次修改规则。
  2. 当您从一个主机转移到另一个主机时,这并不舒服。在某些情况下,您需要更改目录结构以及依赖于它的所有规则。
  3. 如果您出于某种原因决定将站点从 Apache 迁移到 nginx、IIS 或其他服务器,则在将 .htaccess 规则转换为其他服务器格式时会遇到很多麻烦。

所以用 PHP 来处理这些肯定更好。