我正在尝试编写重定向规则,该规则会将用户名重定向到个人资料页面。问题是我不想使用额外的参数来确定当前网址是否适合用户。如果我使用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
谢谢。
答案 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]