2010-11-12 38 views
0

嗨,我是用我的子目录这段代码重定向用户名htaccess的动态用户名

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ profile.php?username=$1&%{QUERY_STRING} 

我有这个问题,那就是用户输入domain.com/username/就会有问题,它只能如果他们进入domain.com/username

任何解决方案??

另外,例如,如果我有一个真正的目录调用/ images /,当他们进入domain.com/images。关于某些循环问题会出现错误。解决这个问题的方法是什么?

+0

尝试'RewriteRule^/(。*)/?* $ profile.php?username = $ 1&%{QUERY_STRING}'并更好地测试用户是否输入了'domain.com/username //'或甚至domain.com /用户名///' – ajreal 2010-11-12 19:35:51

+0

不起作用。我不知道是否有什么可以削减1美元,如果它有额外的/在后面? – 2010-11-12 20:05:02

+0

sia - 它'/?'应该匹配0或1,希望 – ajreal 2010-11-12 20:21:32

回答

0

最好让你的重写需要结尾的斜线。

,那么你可以重定向非斜线结束的URL削减端之一,

使用这样的事情:

RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301] 

我希望这有助于。

+0

不能这样做,我需要删除/如果不是会重定向到profile.php?username = username/which is invalid – 2010-11-13 07:07:20

+0

没关系,你可以改变我的答案,从斜杠结束的网址重定向到另一个。 – Mohammad 2010-11-13 08:03:21

+0

我不是很清楚你的意思吗?你能告诉我一个来自你的代码的例子吗?请。我的情况是,如果domain.com/username和domain.com/username/有效。 – 2010-11-13 18:41:20