这个.htaccess代码有什么问题?

时间:2012-11-04 02:41:31

标签: apache .htaccess url-rewriting

我需要将网站中的文章和个人资料链接更改为动态链接。即。

    文章
  • site.com/article.php?id=12变为site.com/article/this_is_title_of_article
  • for profile site.com/ref.php?user=23变为site.com/john_doe

所以我把它写到.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ ref.php?user=$1 [QSA,L]
RewriteRule ^articles/(.*)$ article.php?user=$1 [QSA,L]

因此,对于配置文件,它的工作原理。您可以输入site.com/username,它可以正常工作。但是,对于文章它没有 - 它只是没有显示任何东西。

我无法理解为什么如果用户名不止一个单词,它就不会在单词之间添加下划线:即使我添加到site.com/john_doe之类的网址也不会有效。

所以,几乎所有上述代码仅适用于用户名AND,如果该用户名只有一个字。

1 个答案:

答案 0 :(得分:0)

规则从上到下进行评估,因此您的用户规则最有可能在您的文章规则获得机会之前捕获所有内容。

试试这个:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^articles/(.*)$ article.php?user=$1 [QSA,L]
RewriteRule ^(.*)$ ref.php?user=$1 [QSA,L]