重写规则似乎被忽略

时间:2013-08-30 22:16:49

标签: .htaccess mod-rewrite url-rewriting

此处http://www.freewebhostingarea.com/faq.html的托管常见问题页面说:

  

是的,我们有完整的.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行),我假设我无法阻止目录列表,因为服务器不允许覆盖。

我实际上找不到任何说我不能的声明,但它是一个免费的主持人,所以我就这么假设了。

但他们的常见问题解答明确指出我可以使用mod重写(也许我误解了?)。

当我输入时:

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

我只是得到了我的404页面而不是将其写入

viewpost.php?etc...
  

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

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

我相信的所有相关文件立即/明显与此问题相关的都在根文件夹中(可能还有其他一些我错过的相关内容,但我试图覆盖我上面的所有基础) 。我的viewpost.php,我的.htaccess我的404.php(并不是真正相关但包含在内,因为这是唯一可以在文件中按预期工作的行。)

  public_html上的

域?

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

  

你的php文件在哪里?

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

  

你的.htaccess文件在哪里?

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

  

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

见上文。

2 个答案:

答案 0 :(得分: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 to:

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

答案 1 :(得分:0)

试试这个

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