Apache将用户名重定向到配置文件页面冲突

时间:2019-12-14 22:37:33

标签: apache mod-rewrite

我正在尝试编写重定向规则,该规则会将用户名重定向到个人资料页面。问题是我不想使用额外的参数来确定当前网址是否适合用户。如果我使用example.com/user/test模式,那就没有问题。但是我想使用example.com/test模式。 问题还在于其他页面在用户配置文件旁边使用此模式。对于前。 example.com/messages。但是这些其他页面只是少数。硬编码的异常应该对重定向规则适用。 这是我用于重定向的内容。

RewriteRule ^([^/]*)/$ /index.php?page=profile&username=$1 [L]

但是对于/messages/, /login/, /settings/这样的网址,我想使用此规则。

RewriteRule ^([^/]*)/$ /index.php?page=$1 [L]

当我从第一个重定向规则中删除结尾斜杠时的另一个问题

RewriteRule ^([^/]*)$ /index.php?page=profile&username=$1 [L]

像这样,发生重定向循环。实际上,我不希望有斜杠结尾,但我通过添加临时将其修复。 我不确定这是否会影响其他重定向规则,但是我也想将index.php重定向为。 总之,我列出了我要做的事情。

example.com/index.php                             =>  example.com
example.com/index.php?page=messages               =>  example.com/messages
example.com/index.php?page=options                =>  example.com/options
example.com/index.php?page=profile&username=test  =>  example.com/test

谢谢。

1 个答案:

答案 0 :(得分:0)

我自己找到的!

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/404
RewriteCond %{REQUEST_URI} !^/messages
RewriteCond %{REQUEST_URI} !^/login
RewriteCond %{REQUEST_URI} !^/logout
RewriteCond %{REQUEST_URI} !^/options
RewriteCond %{REQUEST_URI} !^/deposit
RewriteCond %{REQUEST_URI} !^/profile
RewriteRule ^(.*)$ index.php?page=view-profile&username=$1 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [QSA,L]