这是我的htaccess的片段,底部是用户帐户的重定向。
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/|#(.*))$
RewriteRule ^(.*)$ /$1/ [R=301,L]
</IfModule>
Options -MultiViews
Options +FollowSymlinks
Options -Indexes
ErrorDocument 404 /core/error/templates/404/
AddDefaultCharset utf-8
AddCharset utf-8 .html .css .js .xml .json .rss .php
<IfModule mod_rewrite.c>
RewriteRule "(^|/)\." - [F]
</IfModule>
RewriteRule ^favicon.ico favicon.ico [NC,L]
# ----------------------------------------------------------------------
# RewriteRules
# ----------------------------------------------------------------------
# User profile redirect
#RewriteRule ^([^/]+)?$ /user/$1 [NC,R]
RewriteRule ^/([^/]+)/?$ profile.php?user=$1 [NC,L]
如果我访问www.foo.bar/samsam,它应该使用$_GET['user']
填充"samsam"
,但当我执行回显时,它实际返回$_GET['user'] = profile.php
关于它为什么这样做的任何想法?
答案 0 :(得分:0)
你很接近,但是你需要对最后一行进行一些修复。您需要删除正则表达式中的前导“/”字符。您还需要过滤上一个RewriteRule
,以便它只影响不存在的文件和目录。所以...用以下内容替换它:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ profile.php?user=$1 [NC,L]