如何通过.htaccess实现含指定关键词的URL指向同一页面
正确的.htaccess重写规则配置
你的现有规则逻辑偏离需求,变量引用也存在问题,无法实现“URL含关键词时返回指定页面且地址栏不变”的效果。以下是符合需求的配置:
核心规则(目标页面为HTML)
# 开启重写引擎 RewriteEngine On # 匹配包含关键词"hello"的请求URI,NC表示忽略大小写 RewriteCond %{REQUEST_URI} hello [NC] # 排除真实存在的文件,避免覆盖正常资源访问 RewriteCond %{REQUEST_FILENAME} !-f # 排除真实存在的目录 RewriteCond %{REQUEST_FILENAME} !-d # 内部重写到目标页面,L标记表示终止后续规则匹配,浏览器URL保持不变 RewriteRule ^ /folder/page [L]
若目标页面为PHP文件
如果实际目标页面是/folder/page.php,只需修改重写目标:
RewriteEngine On RewriteCond %{REQUEST_URI} hello [NC] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ /folder/page.php [L]
规则说明
RewriteEngine On:必须开启重写引擎,否则所有规则无效RewriteCond %{REQUEST_URI} hello [NC]:仅对包含“hello”的URL生效,去掉[NC]可区分大小写!-f和!-d条件:确保只有访问不存在的文件/目录时才触发重写,不会影响服务器上已有的真实资源RewriteRule ^ /folder/page [L]:内部转发请求到目标页面,浏览器地址栏完全保持原URL不变,用户只会看到目标页面的内容
内容的提问来源于stack exchange,提问作者user3126531
相关产品推荐
相关产品推荐

