Regex mod_rewrite.htaccess rewrite是否与文件扩展名匹配

Regex mod_rewrite.htaccess rewrite是否与文件扩展名匹配,regex,apache,.htaccess,mod-rewrite,rewrite,Regex,Apache,.htaccess,Mod Rewrite,Rewrite,我正在使用php脚本将请求链接匹配到站点。我目前正在匹配'jcole/'和'jcole'。但是,我希望能够在“jcole”(.php.html |.htm)、“jcole/”和“jcole”上进行匹配。我希望匹配不知道文件扩展名是什么,也不关心名称中是否有句点。(例如,我希望能够在“j.cole”上匹配) 目前我的.htaccess配置如下: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_F

我正在使用php脚本将请求链接匹配到站点。我目前正在匹配
'jcole/'
'jcole'
。但是,我希望能够在
“jcole”
.php.html |.htm
)、“
jcole
/”和“
jcole
”上进行匹配。我希望匹配不知道文件扩展名是什么,也不关心名称中是否有句点。(例如,我希望能够在“
j.cole
”上匹配)

目前我的
.htaccess
配置如下:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*\.html)$ /loadlink.php=link=$1 [L,QSA]
RewriteRule ^(.*)/?$ /loadlink.php?link=$1 [L,QSA]

您最好从php内部完成所有这些工作。Regex不能做任何你想做的事情,尤其是必须处理名称中的任意句点。所以你只需要第二条规则:

请注意,重写条件仅适用于紧跟其后的
重写规则

这会将所有内容发送到“link”参数,仅删除任意尾随斜杠(如果存在)。要去掉名称中的
.php
或随机句点,需要使用
loadlink.php
脚本

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /loadlink.php?link=$1 [L,QSA]