[英]Why am I getting a 404 for a page without the trailing slash but it works with the trailing slash?
我有一个允许用户创建和构建网站的应用程序。 我们称之为system.com 。 当用户创建具有域(例如domain.com )的站点时,他们已转发到我们的域名服务器,它会创建文件夹,并通过cPanel API将其域添加到我们的服务器,如system.com/ [user id] / [网站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]
以及其他变种。
我也尝试了不同的强制尾随斜杠的方法,但这些方法都没有。
我想你希望你的规则看起来像这样:
RewriteRule ^(.*)/?$ index.php?page=$1 [L]
其中说:“任意数量的任意字符可选地后跟斜杠应更改为index.php?page = $ 1,其中$ 1是您在斜杠之前找到的字符。如果匹配,则忽略您找到的任何其他规则。”
它基于你的网址重写访问规则..
RewriteRule ^(.*)/$ index.php?page=$1 [L]
你可以看到index.php?page = $ 1别名为/ ,所有请求都发送到index.php
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.