.htaccess 重写规则多页
.htaccess Rewrite rule multiple pages
几个小时以来一直在努力解决这个问题,但没有成功。
我有一个网站www.example.com/user.php?username=john
我用 .htaccess
让它看起来像这样 www.example.com/user/john
我使用以下 .htaccess
重写规则并且有效
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*/([a-zA-Z0-9_-]+)|([a-zA-Z0-9_-]+))$ ./user.php?username= [L]
问题
我有一个类似 www.example.com/profile.php?username=john 的个人资料页面
我还使用以下 .htaccess
使其看起来像 www.example.com/profile/john
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*/([a-zA-Z0-9_-]+)|([a-zA-Z0-9_-]+))$ ./profile.php?username= [L]
现在,这根本不起作用,但是当我删除第一个重写规则(规则 user.php)并将其放在第二个重写规则(规则 profile.php 之后)时,我的个人资料页面可以正常工作,反之亦然,
所以基本上我放在第一位的规则决定了我可以使用 URL.
访问哪个页面
我需要它同时适用于两个页面。我同意你在 .htaccess
重写时还没有达到初学者水平。
提前致谢。
能否请您尝试以下。由于 URL 具有其唯一性,因此最好检查其 %{REQUEST_URI}
值中的条件,我正在检查 REQUEST_URI 是否从 user
开始然后转到 1 条规则,如果它以 profile
然后去另一个所以没有混淆(我相信你为此尝试了很好的荣誉,但由于条件之间没有隔离,因此它的引擎令人困惑恕我直言)。
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= [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^profile/([\w-]+)/?$ /profile.php?username= [NC,L]
几个小时以来一直在努力解决这个问题,但没有成功。
我有一个网站www.example.com/user.php?username=john
我用 .htaccess
让它看起来像这样 www.example.com/user/john
我使用以下 .htaccess
重写规则并且有效
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*/([a-zA-Z0-9_-]+)|([a-zA-Z0-9_-]+))$ ./user.php?username= [L]
问题
我有一个类似 www.example.com/profile.php?username=john 的个人资料页面
我还使用以下 .htaccess
使其看起来像 www.example.com/profile/john
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*/([a-zA-Z0-9_-]+)|([a-zA-Z0-9_-]+))$ ./profile.php?username= [L]
现在,这根本不起作用,但是当我删除第一个重写规则(规则 user.php)并将其放在第二个重写规则(规则 profile.php 之后)时,我的个人资料页面可以正常工作,反之亦然,
所以基本上我放在第一位的规则决定了我可以使用 URL.
访问哪个页面我需要它同时适用于两个页面。我同意你在 .htaccess
重写时还没有达到初学者水平。
提前致谢。
能否请您尝试以下。由于 URL 具有其唯一性,因此最好检查其 %{REQUEST_URI}
值中的条件,我正在检查 REQUEST_URI 是否从 user
开始然后转到 1 条规则,如果它以 profile
然后去另一个所以没有混淆(我相信你为此尝试了很好的荣誉,但由于条件之间没有隔离,因此它的引擎令人困惑恕我直言)。
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= [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^profile/([\w-]+)/?$ /profile.php?username= [NC,L]