我遇到了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
按预期工作。 不管我做什么 - 它都行不通。所以我真的希望你们中的一些人可以帮助我。
谢谢!
答案 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
。