Apache mod_rewrite无法正常工作

时间:2013-01-04 15:17:21

标签: .htaccess mod-rewrite seo apache2 url-encoding

我遇到了Apache 2.2的mod_rewrite模块的问题 我的代码既不适用于localhost(W8 on Win8 Pro,IPv6),也不适用于webhotel(site5.com)。 我的目标是生成SEO友好的URL:

  

www.xy.com/featured-artists.html

而不是:

  

www.xy.com/index.php?pageID=Artists

PHP变量$ pageID在我的index.php中的第1行定义:

<?php isset($_GET['pageID']) ? $pageID = $_GET['pageID'] : $pageID = 'Forside';?>

我的.htaccess文件中重写的代码如下所示:

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On
  RewriteRule ^([^/.]+)/?$ /index.php?page=$1
</IfModule>

不幸的是,这对网站没有任何影响。 .htaccess文件正常工作,因为其他部分如

ErrorDocument 404 /index.php?pageID=404

按预期工作。 不管我做什么 - 它都行不通。所以我真的希望你们中的一些人可以帮助我。

谢谢!

1 个答案:

答案 0 :(得分:1)

似乎没有打开Mod_rewrite。您的规则包含在IfModule容器中:

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On
  RewriteRule ^([^/.]+)/?$ /index.php?page=$1
</IfModule>

因此规则不会被执行。如果您希望任何规则有效,则需要在服务器配置(或您的webhost)中启用mod重写。否则,你尝试什么都没关系。

一旦你加载了mod_rewrite,你的规则应该接近你想要的。它需要/something并在内部将其重写为/index.php?page=somethin