我想在我的网站上使用个人资料网址,例如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等。
谢谢。
答案 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
你也可以在/后加?
使其成为可选项(结合你的两条规则)。