如何使用mod_rewrite重定向特定长度字符串的请求?
.htaccess 实现32字符路径不存在时的重定向配置
需求说明
当用户访问网站时,若请求路径是32位字符串,且该路径对应的实际文件/目录不存在,自动重定向到指定地址并将这个32位字符串作为参数传递。
配置代码
将以下代码添加到网站根目录的.htaccess文件中:
# 启用URL重写引擎 RewriteEngine On # 匹配条件:请求的路径不是存在的文件,也不是存在的目录 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 匹配32位字符串路径,并重定向到指定地址 RewriteRule ^([A-Fa-f0-9]{32})$ /myurl?param=$1 [L,R=302]
代码解释
RewriteEngine On:开启Apache的URL重写功能,是所有重写规则的基础。RewriteCond %{REQUEST_FILENAME} !-f:检查请求的路径是否不是一个已存在的文件。RewriteCond %{REQUEST_FILENAME} !-d:检查请求的路径是否不是一个已存在的目录。RewriteRule ^([A-Fa-f0-9]{32})$ /myurl?param=$1 [L,R=302]:^([A-Fa-f0-9]{32})$:匹配开头到结尾正好32位的十六进制字符(支持大小写),如果需要允许所有字母数字,可改为^([A-Za-z0-9]{32})$。/myurl?param=$1:指定重定向目标,$1会捕获前面匹配到的32位字符串,作为param参数的值。[L,R=302]:L表示这是最后一条规则,匹配后不再执行后续规则;R=302表示临时重定向,若需永久重定向可改为R=301。
内容的提问来源于stack exchange,提问作者delphirules
相关产品推荐
相关产品推荐

