php - URL 重写,使用.htaccess 还是PHP 来确定使用的内容?

标签 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]

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

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

RewriteRule ^products/([0-9][0-9])/$ /productinfo.php?prodID=$1 

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

最佳答案

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

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

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

关于php - URL 重写,使用.htaccess 还是PHP 来确定使用的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9098126/

相关文章:

apache - 获取 .htaccess 以允许访问指定 IP,但如果来自任何其他 IP,则请求 .htpasswd 用户 + 密码

.htaccess 将子文件夹重定向到 HTTPS

Javascript:重定向到不同的子域

javascript - 如何使用 Javascript 读取 JSON 数组以获取值(如果存在)

php - 使用 jquery 和 ajax 更新 <select> 选项列表

PHP MySQL : User selects the fields to create mysql query array variable

php - 读取网络驱动器上的文件

php - 当我在httpd.conf中将AllowOverride更改为All时,apache将不再解析php

php - 在 .htaccess 上用一些参数将 php 重写为 png

iis - 基于自定义 HTTP header 的 UrlRewrite 条件