2013-06-05 52 views
0

我认为我正在尝试实现不可能的结果。重写包含点的URL参数

该场景是PURL邮件,我已经有一些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

添加圆点,您正则表达式'[A-ZA-Z0-9_-在网页中使用的任何其他环节的完整路径。 ]' – Robert

+0

嘿罗伯特,谢谢,但这会导致内部服务器错误。不适合我! – codedrop

+1

由于点需要用\ – Robert

回答

2

OK试试下面

 

    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,图像或当您使用URL重写功能

+0

完美答案!多谢您的支持! :) – codedrop

2

这是你的修复

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^([a-zA-Z0-9_-]*[\.]*[a-zA-Z0-9_-]+)$ index.php?name=$1 [L] 
+0

转义,非常感谢。这适用于我!执行卓越! – codedrop

+0

更进一步:是否可以使用可选的尾部斜线?像:http://www.jetztzuprimagas.de/A.Armbruster/ – codedrop

+1

而不是RewriteRule ^([a-zA-Z0-9 _-] * [\。] * [a-zA-Z0-9 _-] +) $ index.php?name = $ 1 [L]使用RewriteRule ^([a-zA-Z0-9 _-] * [\。] * [a-zA-Z0-9 _-] +)[/] * $ test。 php?name = $ 1 [L] – Lepanto