漂亮的个人资料网址与页面不冲突

时间:2010-07-17 21:11:04

标签: php .htaccess mod-rewrite

我想在我的网站上使用个人资料网址,例如xyz.com/username

我使用以下代码:

RewriteRule ^([a-zA-Z0-9_-]+)$  index.php?p=profile&u=$1 [L,QSA]

RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?p=profile&u=$1 [L,QSA]

我的问题是...... 我如何像这样使用它,并保持对其他链接的访问,如xyz.com/forums,xyz.com/friends等。

谢谢。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用条件:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?p=profile&u=$1 [L,QSA]

-f和-d分别是“是文件”和“是目录”的标志。 !否定这一点。您的重写应仅适用于您的Web根目录中实际不存在的URL。您可能希望添加一个初始条件以匹配您的用户名格式,这样您就不会踩到每个潜在的404错误。

您也可以添加以下内容:

RewriteCond %{REQUEST_URI} ^/[a-zA-Z0-9_-]+/?$

所以你只会匹配/ adsfasdfasdf而不是/ something / that / not / exists

答案 1 :(得分:0)

使用此:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?p=profile&u=$1 [L,QSA]

它检查所请求的文件是否是目录或文件,如果没有将其传递给index.php

你也可以在/后加?使其成为可选项(结合你的两条规则)。