HTACCESS重定向用户名

时间:2014-09-08 05:51:02

标签: .htaccess mod-rewrite redirect

我正在构建一个社交网络,并且在配置文件网址存在问题时我只是试图更改凌乱的网址...

www.mysite.com/user.php?u=MyUsername

www.mysite.com/user/MyUsername

我只想到htaccess就这么简单,所以我把它添加到了它......

RewriteRule ^user/([0-9a-zA-Z]+) user.php?u=$1 [NC,L]

但是每次我导航到/ user / MyUsername时它似乎都无法在我的系统上重定向它重定向到....

www.mysite.com/user/MyUsername/u?=MyUsername

我被要求将整个htaccess文件放在这里,所以这里......

RewriteEngine on
RewriteCond %{HTTP_HOST} ^tmysite\.com
RewriteRule ^(.*)$ mysite.com/$1 [R=permanent,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(([^/]+/)*)index\.(html?|php[45]?|[aj]spx?)\ HTTP/
RewriteRule index\.(html?|php[45]?|[aj]spx?)$ mysite.com/%1 [R=301,L]

#Rewrite for signup.php login.php logout.php
RewriteRule ^login login.php [NC,L]
RewriteRule ^signup signup.php [NC,L]
RewriteRule ^logout logout.php [NC,L]
RewriteRule ^UserGuide user_guide.php [NC,L]
RewriteRule ^forgotpass forgot_pass.php [NC,L]
RewriteRule ^user/([0-9a-zA-Z]+) user.php?u=$1 [NC,L]

ErrorDocument 404 /pagenotfound.php
ErrorDocument 403 /403.php

<Files 403.shtml>
order allow,deny
allow from all
</Files>

只是让你知道所有其他的RewriteRules工作正常。

2 个答案:

答案 0 :(得分:2)

经过测试的代码:

RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} ^u=(.+)$ [NC]
RewriteRule ^user.php /user/%1? [R=301,L]

RewriteRule ^user/([0-9a-zA-Z]+) user.php?u=$1 [NC,L]

<强>解释

  • %{QUERY_STRING} ^u=(.+)$将捕获GET变量u。变量包含的所有内容都传递给%1。此外,R=301将使用SEO友好的301标题代码重定向。请注意,如果要在url中使用多个GET变量,则必须稍微更改语法。
  • 最后一条规则RewriteRule ^user/([0-9a-zA-Z]+) user.php?u=$1 [NC,L]会将您的网址www.mysite.com/user/MyUsername捕获到user.php?u=$1

答案 1 :(得分:0)

要重定向用户名,如下所示: www.aeonlabs.solutions/@mtpsilva

重定向到 www.aeonlabs.solutions/curriculum/mtpsilva

可以像这样设置 .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_URI} @(.*)
RewriteRule ^(.*) /curriculum/%1/? [L,R=301]