.htaccess(URL有空格时找不到对象)

时间:2014-09-12 18:38:04

标签: php regex apache .htaccess mod-rewrite

我的.htaccess:

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^([\w-]+)/?$ index.php?user=$1 [L]
RewriteRule ^([\w-]+)/([\w-]+)/?$ index.php?user=$1&type=$2 [L]

当我像 dummy.com/UsernameTest 那样连接时它运行得非常好,问题是,当我连接 dummy.com/Username Test 时,URL改变了空格到%20 (如预期的那样?),我收到Object Not Found(404)错误。我已经在我的PHP文件中尝试了 urldecode($ _ GET [' user']); ,但我遇到了同样的问题。

1 个答案:

答案 0 :(得分:1)

您需要更改正则表达式以允许空格,并使用RewriteCond来阻止循环:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ index.php?user=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?user=$1&type=$2 [L,QSA]