【问题标题】:ReWrite Rule for Dbname as common subfolder将 Dbname 的规则重写为公共子文件夹
【发布时间】:2015-10-02 11:33:02
【问题描述】:

有人可以帮助我为 Apache 进行以下重写 我希望结果是:

domain.com/(数据库用户名所属的登陆搜索页面)

domain.com/db1/(用于 db1 的索引登录页面,其中 db1 可以是任何其他 db 名称)

domain.com/db1/accounts/(登录后)

domain.com/db1/admin/(登录后的另一个页面)

如果可以的话,请帮我url re-write...

我有类似的东西,但它不起作用:

`选项+FollowSymLinks

重写引擎开启

RewriteRule /(.*)/$ /index.php?dbname=$1

RewriteRule /(.*)/account/$ /account.php?dbname=$1 `

谢谢

问候 约翰

【问题讨论】:

  • 到目前为止你取得了什么成就?

标签: php .htaccess rewrite rules


【解决方案1】:

避免重写对/的调用

只需在索引或您想要的任何其他页面中显示登录表单即可。

然后

这个块告诉服务器允许重写,坚持现有的文件和目录,只重写不“存在”的东西,你将从 / 重写

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteBase /

那么你的规则

RewriteRule ^db([0-9]+)$            index.php?dbname=$1&%{QUERY_STRING}    [L]
RewriteRule ^db([0-9]+)/account$    index.php?admin=$1&%{QUERY_STRING}     [L]
RewriteRule ^db([0-9]+)/admin$      index.php?admin=$1&%{QUERY_STRING}     [L]

这是假设登录后您将把他发送到

https://www.yoursite.com/db1 
https://www.yoursite.com/db1/account 
https://www.yoursite.com/db1/admin 

例如

【讨论】:

  • 非常感谢,但我的 dbnames 不只是 1-10,它们可以是任何东西,例如 cx001,我该怎么做?
  • ([a-zA-Z0-9_-]+) 字母,大小写;数字; hifens 和下划线...
  • 你也可以像你做的那样将所有内容重定向到 index.php,然后分解 url 并像真正的前端控制器一样处理它们......
  • 您好,非常感谢,但我不能这样做以将任何第一级重写为 dbname:RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?dbname= $1&%{QUERY_STRING} [L](好像没用)
  • 感谢您的帮助,我能够让我的最终重写规则按照我想要的方式工作:RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteBase / RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?dbname=$1&%{QUERY_STRING} [L] RewriteRule ^([a-zA-Z0-9_-]+)/accounts/$ account.php?dbname=$1&%{QUERY_STRING} [L]
猜你喜欢
  • 1970-01-01
  • 2012-11-20
  • 2012-11-22
  • 1970-01-01
  • 2023-03-13
  • 2016-08-16
  • 2012-02-24
  • 2017-07-08
  • 1970-01-01
相关资源
最近更新 更多