我需要将一些直接请求映射到自定义脚本:
somesite.com/getfile/file_name.xxx
somesite.com/getfile/type1/file_name.xxx
somesite.com/getfile/type2/file_name.xxx
somesite.com/getfile/type3/file_name.xxx
为了完成这项任务,我用这些规则创建了一个.htaccess:
RewriteEngine On
RewriteRule ^getfile/(.*)/(.*) /script_path/getfile/file.php?pn=$2&type=$1 [L,NC]
RewriteRule ^getfile/(.*) /script_path/getfile/file.php?pn=$1 [L,NC]
一切似乎都运转正常,但如果我这样称呼网址:
somesite.com/test_path/other/getfile/test.php
此网址将重定向到file.php
脚本!
我只需要在将域名发送到脚本后立即以getfile开头的路径。
somesite.com/getfile -> need to be redirected
somesite.com/test_path/other/getfile/ -> must not be redirected
网站文件夹结构
/
|_www
|_serverRootFolder (the .htaccess file here, this is the apache serverRoot is www.somesite.com/)
|_script_path
答案 0 :(得分:2)
(.*)/(.*)
尽可能地匹配到右边。要仅匹配域之后的那些,而不是(.*)
,而不是([^/]+)
,请使用$
,这意味着“不斜线”,因此它只会转到下一个斜杠。我最后还添加了RewriteRule ^getfile/([^/]+)/([^/]+)$ /script_path/getfile/file.php?pn=$2&type=$1 [L,NC]
RewriteRule ^getfile/([^/]+)$ /script_path/getfile/file.php?pn=$1 [L,NC]
,说这些没有其他内容。
{{1}}