我正在构建一个社交网络,并且在配置文件网址存在问题时我只是试图更改凌乱的网址...
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工作正常。
答案 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变量,则必须稍微更改语法。 ^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]