0

我的 htaccess 代码有问题。

当我尝试加载 example.com/user/register/ 时,读取的页面是 profile.php

当我访问 example.com/user/register 时,它工作正常,它读取 register.php

如何编辑此 htaccess 代码以使用 example.com/user/register/?

RewriteRule ^user/register?$ register.php [L]
RewriteRule ^user/register?$ /user/register/ [R=301,L]

RewriteRule ^user/?$ user.php [L]
RewriteRule ^user?$ /user/ [R=301,L]

RewriteRule ^user/(\d+)/$ profile.php?id=$1 [L]
RewriteRule ^user/(\d+)?$ /user/$1/ [R=301,L]

RewriteRule ^user/([^/]+)/$ profile.php?username=$1 [L]
RewriteRule ^user/([^/]+)?$ /user/$1/ [R=301,L]
4

1 回答 1

1

你是在使用 /user/register/ 还是 /user/register 之后?

从您当前重写的外观来看,您正在重写 /user/register 以指向 /register.php,然后将其重定向到 /user/register/ 尽管由于[L]前面的规则,该重定向永远不会发生。

如果您想使用 /user/register/ 我建议尝试:

RewriteRule ^user/register/$    /register.php [L]
RewriteRule ^user/register$     /user/register/ [R=301,L]

如果你想要 /user/register 你应该需要:

RewriteRule ^user/register$     /register.php [L]
RewriteRule ^user/register/$    /user/register [R=301,L]

或者,如果您不关心 URL 是否有斜杠,可以这样做:

RewriteRule ^user/register/?&   /register.php [L]

要考虑的另一点是,如果您不希望所有 URL 都带有斜杠,则可以在 .htaccess 顶部使用通用重定向,而不是每个页面的重定向:

RewriteRule ^(.*)/$    /$1 [R=301,L]
于 2012-04-28T15:57:27.410 回答