请求在.htaccess中实现带条件的URL重写:匹配/amp/结尾并跳转
嘿,这就帮你实现这个.htaccess的重写需求,我把规则和每部分的作用都拆解清楚,方便你理解和调整:
最终.htaccess规则代码
RewriteEngine On # 满足两个AND条件时执行重写 RewriteCond %{REQUEST_URI} ^(.+)/amp/$ [NC] RewriteCond %{DOCUMENT_ROOT}/mobile%1.html -f RewriteRule ^(.+)/amp/$ https://www.examplesite.com/mobile$1.html [L,R=301]
规则细节解释
- 开启重写引擎:第一行
RewriteEngine On是必须的,确保Apache的重写模块生效(前提是你已经启用了mod_rewrite模块) - 第一个条件(检查URL末尾的/amp/):
RewriteCond %{REQUEST_URI} ^(.+)/amp/$ [NC]%{REQUEST_URI}代表当前请求的路径部分(比如/folder/file/amp/)- 正则
^(.+)/amp/$会捕获/amp/前面的路径内容(比如这里会捕获/folder/file),[NC]表示忽略大小写匹配
- 第二个条件(检查目标文件是否存在):
RewriteCond %{DOCUMENT_ROOT}/mobile%1.html -f%{DOCUMENT_ROOT}是你的网站根目录的服务器绝对路径%1是引用第一个条件里捕获的内容(也就是/folder/file),组合起来就是/mobile/folder/file.html-f表示检查这个路径对应的文件是否是存在的普通文件
- 执行重写:
RewriteRule ^(.+)/amp/$ https://www.examplesite.com/mobile$1.html [L,R=301][L]表示这是最后一条规则,匹配后不再处理后续规则R=301表示永久重定向(如果需要临时重定向可以改成R=302),搜索引擎会更新索引指向新地址
注意事项
- 确保你的服务器已经启用了
mod_rewrite模块,如果是Apache的话,通常需要在配置里开启RewriteEngine并允许.htaccess文件生效(设置AllowOverride All) - 测试的时候可以先使用
R=302临时重定向,确认规则正常工作后再改成R=301永久重定向
内容的提问来源于stack exchange,提问作者arjun
相关产品推荐
相关产品推荐

