我认为我正试图取得不可能的结果。
该场景是PURL-Mailing,我已经重写了一些URL,以适应发送给客户的URL。
客户通过以下域名进入网站: http://domain.com/ 用户名
变量用户名代表GET变量,相当于 http://domain.com/index.php?user= 用户名
我通过以下重写规则来实现这一目标:
RewriteBase /
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?name=$1 [QSA]
#This works perfect and translates to http://domain.com/UserName
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?name=$1 [L]
#This achieves the goal but does not reflect in the URI I want:
#http://domain.com/UserName
更进一步,还有一些名称在名称中包含一个点,如 A.Jackson ,也需要被视为用户名。由于那些只有13名,我可以手动实现它们。我不知道的是如何阻止点之后的部分作为文件扩展名处理。有没有办法在* mod_rewrite *中编写自定义句柄? 如果是这样,任何人都可以向我解释如何?
提前致谢和最诚挚的问候!
答案 0 :(得分:2)
这是您的修复
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]*[\.]*[a-zA-Z0-9_-]+)$ index.php?name=$1 [L]
答案 1 :(得分:2)
好的尝试下面
RewriteCond %{REQUEST_FILENAME} !(img|anyother folders that you want to ignore|anyother folders that you want to ignore|...) RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^([a-zA-Z0-9_-]*[\.]*[a-zA-Z0-9_-]+)[/]*$ test.php?name=$1 [L]
使用您要忽略的文件夹名称替换“您要忽略的任何其他文件夹”。使用“|”
分隔每个文件夹使用网址重写功能时,您还必须提供网页中使用的CSS,图片或任何其他链接的完整路径