.htaccess 重写规则似乎被忽略

.htaccess 重写规则似乎被忽略,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,此处的主机常见问题页面显示: 是的,我们有完整的.htaccess支持。 Mod_rewrite已启用,您将能够使用永久链接或任何其他规则 因此,在我的.htaccess文件中,我有: Options ExecCGI Includes IncludesNOEXEC SymLinksIfOwnerMatch -Indexes #Options -Indexes #Options All -Indexes <------------- I've also tried these com

此处的主机常见问题页面显示:

是的,我们有完整的.htaccess支持。 Mod_rewrite已启用,您将能够使用永久链接或任何其他规则

因此,在我的
.htaccess
文件中,我有:

Options ExecCGI Includes IncludesNOEXEC SymLinksIfOwnerMatch -Indexes
#Options -Indexes
#Options All -Indexes     <------------- I've also tried these commented lines
ErrorDocument 404 /404.php      
RewriteEngine On      

# Taking the advice of early posters to simplify my two rules into one
# my current rewrite rule is:

RewriteRule ^([a-zA-Z0-9]+)/([0-9]+)/?$ viewpost.php?category=$1&number=$2

# Below were my original re-write rules when I posted this question: 
#RewriteRule ^([a-zA-Z0-9]+)/([0-9]+)$ viewpost.php?category=$1&number=$2
#RewriteRule ^([a-zA-Z0-9]+)/([0-9]+)/$ viewpost.php?category=$1&number=$2
我只是获取404页面,而不是将其写入

viewpost.php?etc...
@user2734435您的文件夹结构是什么

我的根文件夹中有我的大部分php文件。我有一个图像文件夹,每个类别都有一个帖子内容文件夹

我认为与此问题立即/显然相关的所有相关文件都在根文件夹中(可能还有其他相关的东西我没有找到,但我已尝试覆盖上面的所有基础)。my viewpost.php、my.htaccess和my 404.php(不是真正相关的,但包含在内,因为这是文件中唯一一行按预期工作的代码)

公共html上的域

这是一个免费的主机。没有公开的html。我可以使用这个Web主机访问的范围可能是public_html。我将索引放在“根”文件夹中,这就是访问我的域时显示的内容

你的php文件在哪里

我上面描述的“根”文件夹

你的.htaccess文件在哪里

根文件夹。我没有其他.htaccess文件

在其他目录中是否有其他.htaccess文件

请参见上文。

试试这个

Options -Indexes +FollowSymLinks -MultiViews
RewriteEngine On      
RewriteRule ^([a-zA-Z0-9]+)/([0-9]+)/?$ viewpost.php?category=$1&number=$2
试试这个

Options -Indexes +FollowSymLinks -MultiViews
RewriteEngine On      
RewriteRule ^([a-zA-Z0-9]+)/([0-9]+)/?$ viewpost.php?category=$1&number=$2
这个
([^/]+)
告诉您想要捕获所有不是
/
的东西作为$1

这个
([0-9]+)
告诉您想要捕获任何数量的数字作为$2

/?
表示最后一个
/
是可选的

简而言之,这条规则意味着:

domain.com/anythinghere/anynumberhere

重拨至:

domain.com/viewpost.php?category=anythinghere&number=anynumberhere
这个
([^/]+)
告诉您想要捕获所有不是
/
的东西作为$1

这个
([0-9]+)
告诉您想要捕获任何数量的数字作为$2

/?
表示最后一个
/
是可选的

简而言之,这条规则意味着:

domain.com/anythinghere/anynumberhere

重拨至:

domain.com/viewpost.php?category=anythinghere&number=anynumberhere

有什么理由写两次相同的规则吗?第二条规则不一样。我有尾随的/to,这样/s/1和s/1/都会被重写。但这会引起问题吗?我现在将尝试删除其中一行。这两条规则是正确的,但可以通过添加/?在$to第一条规则之前。@user2734435是的,获得答案的最佳时间是当你发布你的问题时,因为人们将主要与之互动;)所以,如果可能的话,你应该一直呆在那里大约10~30分钟。试试这条规则,让我知道它是否有效,或者给你一个404,试着尽可能最好地描述它发生了什么。如果它给出404,请尝试删除这一行
ErrorDocument 404/404.php
,然后重试。@user2734435?“字符旁边”表示有或没有该字符。因此它将匹配
s/1/
s/1
<代码>前面的符号是可选的是的,前面的字符或组是可选的。有没有理由写两次相同的规则?第二条规则不一样。我有尾随的/to,这样/s/1和s/1/都会被重写。但这会引起问题吗?我现在将尝试删除其中一行。这两条规则是正确的,但可以通过添加/?在$to第一条规则之前。@user2734435是的,获得答案的最佳时间是当你发布你的问题时,因为人们将主要与之互动;)所以,如果可能的话,你应该一直呆在那里大约10~30分钟。试试这条规则,让我知道它是否有效,或者给你一个404,试着尽可能最好地描述它发生了什么。如果它给出404,请尝试删除这一行
ErrorDocument 404/404.php
,然后重试。@user2734435?“字符旁边”表示有或没有该字符。因此它将匹配
s/1/
s/1
<代码>前面的符号是可选的是。确切地说,前面的字符或组是可选的。是。没有区别。当我做domain.com/s/1(我在实现我的实际类别和帖子之前简化的测试用例)时仍然得到404,但是为什么需要额外的问号呢?这不会让浏览器忽略viewpost.php吗?(这是我需要将变量传递到的文件)了解更多上下文:我使用viewpost.php中的变量来决定显示哪个帖子,例如include$1.$2.php(显然,我的实现比这要复杂一些。但是你明白了要点。如果htaccess文件在一个文件夹中,那么把这行
RewriteBase/WRITE\u YOUR\u DIR\u NAME\u放在这里/
RewriteEngine on
之后,我的htaccess文件在根=(是的。没有区别。当我做domain.com/s/1时仍然会得到一个404。)(在我实现我的实际类别和帖子之前,我简化了测试用例)为什么需要额外的问号?这不会让浏览器忽略viewpost.php吗?(这是我需要将变量传递到的文件)以获取更多上下文:我使用viewpost.php中的变量来决定显示哪个帖子,例如包含$1。$2.php(显然,我的实现比这要复杂一点。但是你明白了要点。如果htaccess文件在文件夹中,那么把这一行
RewriteBase/WRITE\u你的目录\u NAME\u写在这里/
RewriteEngine on
之后,我的htaccess文件在根目录中=(