重写包含点的URL参数

时间:2013-06-05 09:27:30

标签: php .htaccess get rewrite

我认为我正试图取得不可能的结果。

该场景是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 *中编写自定义句柄? 如果是这样,任何人都可以向我解释如何?

提前致谢和最诚挚的问候!

2 个答案:

答案 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,图片或任何其他链接的完整路径