.htaccess - .htaccess URL 重写特定文件
问题描述
我正在尝试为类似 www.example.com/profile.php?name=username 的内容设置类似 www.example.com/username 的 URL
我在我的 .htaccess 中试过这个
RewriteEngine on
RewriteRule ^user/(.*)$ profile.php?name=$1 [NC,B,QSA]
但这使它适用于所有页面。我希望这仅在 URL 类似于 www.example.com/username 时才有效,但它也适用于 www.example.com/users.php
如果 users.php 或任何其他 .php 文件被打开,那么重写规则不应该适用于它。
如何做到这一点?
解决方案
您可以在请求 uri 上添加重写条件,该条件匹配不以 .php 结尾的所有内容
例如:(未测试)
RewriteEngine on
RewriteCond %{REQUEST_URI} !\.php$
RewriteRule ^user/(.*)$ profile.php?name=$1 [NC,B,QSA]
检查 uri 是否实际上是一个文件在框架中非常流行,但它比以 .php 结尾的字符串匹配要慢,因为每个请求 apache 都需要检查文件是否存在于磁盘上。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^user/(.*)$ profile.php?name=$1 [NC,B,QSA]
推荐阅读
- arrays - 由于通配符和其他特殊字符,使用数组存储循环执行命令的 BASH 脚本失败
- r - 使用 Excel 文件在 ggplot2 中创建森林图
- xml - 替换 MPEG DASH 视频的片段
- wordpress - 在 x 个帖子后插入 adsense 广告
- c# - 使用 Ably.io 创建连接时出现未知错误
- java - 从 Java 调用(工作的)REST WebService 冻结而没有响应
- jquery - 显示动态行中行之间的项目总和
- web3 - 无法通过 npm 调用 web3 api(getTransactionReceipt)
- phantomjs - 使用 phantomjs 进行 Odoo 测试 - page.evaluate 评估结果:false
- ssis - 如何在 SSIS Pivot 转换中将行发送到错误输出?