这是我的htaccess:
RewriteEngine On
RewriteBase /
RewriteRule ^about$ about.php
RewriteRule ^contact$ contact.php
RewriteRule ^user/([^/.]+)?$ user.php?uname=$1&%{QUERY_STRING}
我想要做的是有人去mysite.com/username
它会做:user.php?uname = $ 1&%{QUERY_STRING}
这只是:RewriteRule ^/([^/.]+)?$ user.php?uname=$1&%{QUERY_STRING}
但如果用户名是页面名称怎么办? 例如,如果用户名是关于,或联系?有没有办法添加例外?或者我该如何处理它。
答案 0 :(得分:1)
最简单的解决方案是创建用户名黑名单。不允许某人创建与您网站上的必需页面匹配的用户名。如果在当前规则上放置[L]标志,它将停止进一步的规则处理,因此您可以在底部添加另一个规则来捕获用户名。
RewriteRule ^([^/.]+)?$ user.php?uname=$1&%{QUERY_STRING}
当然,即使您没有将用户名列入黑名单,系统也应该正常工作。他们只需使用/ user / about,因为已经使用了/ about URI。
答案 1 :(得分:1)
你没有使用L(最后一个标志),这可以解决你的问题。请改用此代码:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteRule ^about/?$ /about.php [L,NC]
RewriteRule ^contact/?$ /contact.php [L,NC]
RewriteRule ^user/([^/]+)/?$ /user.php?uname=$1 [L,NC,QSA]
答案 2 :(得分:0)
您可以使用重定向作为示例
Redirect /about http://mysite.com/about.php
希望这有帮助。