我有一个允许用户创建和构建网站的应用。我们称之为 system.com 。当用户创建具有域的站点(例如 domain.com )时,他们已转发到我们的域名服务器,它会创建文件夹并通过cPanel API将其域添加到我们的服务器,如 system.com/[user id] / [site id] / 。在该文件夹中有一个index.php文件和一个.htaccess文件,其中包含:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)/$ index.php?page=$1 [L]
我不会从那里详细介绍它的工作原理,但基本上用户可以创建 domain.com/something/something-else / 等页面。 “东西”文件夹显然不存在,我们的系统只是从htaccess中选择并从那里开始。
我的问题是 domain.com/something/something-else / 有效,但 domain.com/something/something-else 会返回404.我去过做研究和尝试很多东西,但似乎无法让它工作。有任何想法吗?提前谢谢。
修改:
我应该提到我到目前为止所尝试的内容。我已经尝试将重写改为工作而不管尾随斜杠,如下所示:
RewriteRule ^(.*)(?/$) index.php?page=$1 [L]
其他变种。
我也尝试了不同的强制尾部斜杠的方法,但这些方法都没有。
答案 0 :(得分:2)
我想你希望你的规则看起来像这样:
RewriteRule ^(.*)/?$ index.php?page=$1 [L]
其中说:“任意数量的任意字符(可选地后跟斜线)应更改为index.php?page = $ 1其中$ 1是您在斜杠之前找到的字符。同时忽略您发现的任何其他规则匹配“。
答案 1 :(得分:0)
它基于您的网址重写访问规则..
RewriteRule ^(.*)/$ index.php?page=$1 [L]
你可以看到 index.php?page = $ 1 别名为 / ,所有请求都发送到index.php