2013-08-30 137 views
1

这里http://www.freewebhostingarea.com/faq.html发现托管FAQ页面说:重写规则似乎被忽略

是的,我们有充分的.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页,我把(4号线),我想我不能阻止目录列表可能是因为该服务器不允许覆盖。

我不能在任何地方发现一个声明,说我不能,但它是一个免费的主机,所以我就是这么认为的。

但他们的FAQ特别声明我可以使用mod重写(也许我误解?)。

当我键入:

http://www.mywebsite.com/s/1 

我只是让我的404页,而不是它写入

viewpost.php?etc... 

@ user2734435什么是您的文件夹结构?

我的大部分php文件都放在我的根文件夹中。我有一个图片文件夹,我有一个文件夹用于发布每个类别的内容。

我相信所有相关的文件都是立即显然与此问题相关的文件夹位于根文件夹中(可能还有其他与我相关的事件,但我试图覆盖上面所有的基础)。我viewpost.php,我的.htaccess我404.php(不是真的,但培训相关包含在内,因为这是按预期在该文件中,它工作的唯一行。)上的public_html

域?

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

你的php文件在哪里?

上面描述的“root”文件夹。

你的.htaccess文件在哪里?

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

你在其他目录上有任何其他的.htaccess文件吗?

参见上文。

+0

是否有任何理由来写同样的规则两次? –

+0

第二条规则是不一样的。我有尾随/以便/ s/1和s/1 /都会被重写。那会导致问题吗?我会尝试删除其中一行。 – user2734435

+0

在第一个斜杠后面加上一个斜杠? – Skaparate

回答

1
Options +FollowSymLinks -MultiViews 

RewriteEngine On 
RewriteBase/

ErrorDocument 404 /404.php 
RewriteRule ^([^/]+)/([0-9]+)/?$ /viewpost.php?category=$1&number=$2 [L] 

([^/]+)告诉你想捕捉一切不是/ $ 1。

([0-9]+)告诉你想要捕获任何数量的数量为2美元。

这个/?表示最后的/是可选的。

因此,在短期这是规则意味着:

domain.com/anythinghere/anynumberhere 

domain.com/anythinghere/anynumberhere/ 

Rediredts到:

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

试试这个

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

是的。没有不同。当我执行domain.com/s/1(我在实现我的实际类别和帖子之前,我的简化测试用例)时,仍然会得到404。为什么需要额外的问号?不会让浏览器忽略viewpost.php吗? (这是我需要传递变量的文件) 更多上下文:我使用viewpost.php中的变量来决定显示哪个帖子 例如。包括$ 1. $ 2.php(显然我的实现比这个复杂一点,但是你得到了要点: – user2734435

+0

如果htaccess文件在一个文件夹内,那么把'RewriteBase/WRITE_YOUR_DIR_NAME_HERE /'放在'RewriteEngine on'后面' – user2533445

+0

我的htaccess文件在root =( – user2734435