用户名与DOT无法正常工作?

时间:2016-02-19 15:11:21

标签: php apache .htaccess mod-rewrite

我对这个领域全新。我想改变这个网址

http://localhost/livelor/profile.php?username=naveen471996


http://localhost/livelor/naveen471996

是的,我这样做了当这样的网址无法正常工作时404找不到

http://localhost/livelor/vikaass.waran

这是我的.htaccess

RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.php -f  
RewriteRule ^([^\.]+)$ $1.php [NC]

RewriteRule ^([0-9a-zA-z]+)$ profile.php?u=$1 [L]

2 个答案:

答案 0 :(得分:1)

RewriteRule ^([0-9a-zA-z]+)

表示只允许使用字符0-9 a-z和A-Z

RewriteRule ^([0-9a-zA-z.]+) 

应解决问题,您可以在用户名中使用DOT。

你应该看看REGEX&#39>

答案 1 :(得分:0)

它返回404,因为它认为.warran是文件扩展名,并且无法加载它。要解决此问题,请从用户名中禁用句点(也称为点)或使用%encoding(http://php.net/manual/en/function.urlencode.php):

$final_url = urlencode($username);

然后,当您想要解码它时,请使用:

$user = urldecode($_GET["username"]);

这样,您就可以通过$ _GET传递大多数UTF-8字符。但要注意HTML字符(以及可解码为HTML字符的%代码),因为这可能会导致一些黑客问题。在解码url之前,使用preg_replace()或类似的东西去掉那些。

有关%代码的完整列表,请访问http://www.w3schools.com/tags/ref_urlencode.asp