0
這是我的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
任何想法,爲什麼它的行爲這樣?
我有!-d和!-f在我的代碼片段的頂部附近聲明,這是否有所作爲?我也試過,但是當我去foo.bar/index.php與作爲GET變量對待。我能夠得到它與此^([A-Za-z0-9 -_] +)$ /profile.php?user=$1 [NC,L]不知道爲什麼 – Eli
是的,你確實需要!-d和!-f再次聲明。當它遇到RewriteRule時,它會清除以前的所有RewriteCond語句。換句話說,RewriteCond僅適用於他的下一個RewriteRule語句。 – curtisdf
我認爲混淆部分源於第一個Rewrite塊。我可以問 - 爲什麼在那裏?你想在那裏做什麼? – curtisdf