【rewriterule】RewriteRule 是 Apache 服务器中 mod_rewrite 模块的一个重要指令,主要用于 URL 的重写。它能够根据设定的规则将用户请求的 URL 转换为另一个 URL,从而实现更友好、更安全或更符合 SEO 的链接结构。通过 RewriteRule,网站管理员可以灵活地控制 URL 的行为,比如隐藏真实路径、防止直接访问文件、进行重定向等。
RewriteRule 的使用需要结合 RewriteCond(条件判断)一起使用,以确保规则在特定条件下才生效。常见的应用场景包括:去除文件扩展名、动态页面静态化、URL 重定向、访问控制等。正确配置 RewriteRule 可以显著提升网站的用户体验和搜索引擎优化效果。
表格:RewriteRule 常见用法与示例
功能 | 示例代码 | 说明 |
去除文件扩展名 | `RewriteRule ^about$ about.php [L]` | 访问 `example.com/about` 会显示 `about.php` 内容 |
重定向旧 URL | `RewriteRule ^old-page\.html$ /new-page [R=301,L]` | 将 `old-page.html` 301 重定向到 `/new-page` |
防止直接访问文件 | `RewriteCond %{REQUEST_FILENAME} !-f` `RewriteCond %{REQUEST_FILENAME} !-d` `RewriteRule ^.$ index.php [L]` | 如果请求不是真实文件或目录,则跳转到 `index.php` |
添加查询参数 | `RewriteRule ^product/([0-9]+)$ product.php?id=$1 [L]` | 将 `product/123` 映射为 `product.php?id=123` |
多语言支持 | `RewriteCond %{HTTP_HOST} ^example\.com$` `RewriteRule ^(.)$ http://www.example.com/$1 [R=301,L]` | 将主域名重定向到带 www 的版本 |
注意事项:
- RewriteRule 需要配合 RewriteCond 使用,以增强灵活性。
- 规则顺序非常重要,Apache 会按顺序匹配规则。
- 测试时建议开启日志记录,便于排查问题。
- 不同服务器环境可能对语法有细微差异,需根据实际情况调整。
通过合理使用 RewriteRule,可以有效提升网站的可维护性和用户体验,是 Web 开发中不可或缺的技术之一。