我有一个.HTACCESS
文件,允许用户在我的社交网站上写一个用户的username
。
我首先实施了这些规则,只需修改网址就可以轻松访问特定用户profile_page
,即profile_page/freddy
- 将我带到Freddy的个人资料页面等。规则正在运作。
我也有bio.php
,这对每个用户都是唯一的。因此,我编写了与profile_page
完全相同的规则,但只更改了文件名。但是,这不起作用,我收到404错误。
我有几个类似的页面,但profile_page
的规则是唯一有效的。
.HTACCESS in full:
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^(me)?/?$ profile_page.php [L,NC]
RewriteRule ^profile(?:_page)?/([\w-]+)/?$ profile_page.php?u=$1 [L,QSA,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/?$ profile_page.php?u=$1 [L,QSA]
RewriteRule ^(me)?/?$ photos.php [L,NC]
RewriteRule ^photos?/([\w-]+)/?$ photos.php?u=$1 [L,QSA,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/?$ photos.php?u=$1 [L,QSA]
RewriteRule ^(me)?/?$ hearted_thoughts.php [L,NC]
RewriteRule hearted_thoughts([\w-]+)/?$ hearted_thoughts?u=$1 [L,QSA,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/?$ hearted_thoughts?u=$1 [L,QSA]
RewriteRule ^(me)?/?$ favourited.php [L,NC]
RewriteRule favourited([\w-]+)/?$ favourited?u=$1 [L,QSA,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/?$ favourited?u=$1 [L,QSA]
RewriteRule ^(me)?/?$ bio.php [L,NC]
RewriteRule bio([\w-]+)/?$ bio?u=$1 [L,QSA,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/?$ bio?u=$1 [L,QSA]
答案 0 :(得分:0)
由于重写的模式(
^(me)?/?$
},您的rewriteRules彼此冲突
和
^([w-]+)$
)在所有规则中。
像这样编辑你的规则:
Options -MultiViews
RewriteEngine On
RewriteBase /
#--let existent files and dir pass untouched--#
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
################
#--rewrite /me to /profile_page.php--
RewriteRule ^(me)?/?$ profile_page.php [L,NC]
###############
#--Rewrite /profile/foo to /profile_page.php?u=foo--#
RewriteRule ^profile(?:_page)?/([\w-]+)/?$ profile_page.php?u=$1 [L,QSA,NC]
###############
#--rewrite /bio/foo to /bio.php?u=foo--#
RewriteRule ^bio/(.+)$ /bio.php?u=$1 [NC,L]
###############
#--other rules--#