Apache .htaccess重写规则多页
几个小时来,我一直在努力解决这个问题,但没有得到正确的答案 我有一个网站 我使用Apache .htaccess重写规则多页,apache,.htaccess,mod-rewrite,url-rewriting,friendly-url,Apache,.htaccess,Mod Rewrite,Url Rewriting,Friendly Url,几个小时来,我一直在努力解决这个问题,但没有得到正确的答案 我有一个网站 我使用.htaccess使它看起来像这样 我使用下面的.htaccess重写规则,它可以正常工作 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*/([a-zA-Z0-9_-]+)|([a-zA-Z0-9_-]+))$ ./user.php?username=$1 [L] 问题 我有一个像这样的个人资料页面 我还使用以下.htacc
.htaccess
使它看起来像这样
我使用下面的.htaccess
重写规则,它可以正常工作
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*/([a-zA-Z0-9_-]+)|([a-zA-Z0-9_-]+))$ ./user.php?username=$1 [L]
问题
我有一个像这样的个人资料页面
我还使用以下.htaccess
使它看起来像
现在,这根本不起作用,但当我删除第一条重写规则(rule user.php)并将其放在第二条重写规则(rule profile.php)之后,我的配置文件页面工作,反之亦然
因此,基本上,无论我首先放置什么规则,都决定了我可以使用我的URL访问哪个页面。
我需要它为两个页面工作。我同意你的看法,在.htaccess
rewrite方面,我还没有达到初学者的水平
提前谢谢。请尝试以下内容。由于URL具有其唯一性,因此最好检查其
%{REQUEST\u URI}
值中的条件,我正在检查REQUEST\u URI是否从user
开始,然后选择1个规则,如果它从profile
开始,则选择另一个规则,这样就不会产生混淆(我相信你在这方面做得很好,但由于条件之间没有分离,因此它的引擎IMHO令人困惑)
您也可以尝试下面的方法,首先检查传入的请求是否既不是文件也不是目录,然后检查匹配模式
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^user/([\w-]+)/?$ /user.php?username=$1 [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^profile/([\w-]+)/?$ /profile.php?username=$1 [NC,L]
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/user/([\w-]+)/?$
RewriteRule ^.*$ /user.php?username=%1 [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/profile/([\w-]+)/?$
RewriteRule ^.*$ /profile.php?username=%1 [NC,L]
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^user/([\w-]+)/?$ /user.php?username=$1 [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^profile/([\w-]+)/?$ /profile.php?username=$1 [NC,L]