我正在开发一个包含3个页面的网站(主页,第2页,第3页)...在第二页中有一个导航栏,有4个项目(subpage1,subpage2,...),我用它们用url变量替换页面2的内容!换句话说,第2页导航栏的第二项指向:
http://localhost/uk/page2/index.php?pg=subpage2
项目3指向:
http://localhost/uk/page2/index.php?pg=subpage3
现在我想通过.htaccess
使用更友好的网址!
我写过:
RewriteEngine On
RewriteRule /uk/page2/(.*)/$ /uk/page2/index.php?pg=$1
放在根目录中的.htaccess
中的
但是不起作用! 请帮忙!!!
答案 0 :(得分:9)
当你使用.htaccess时,你没有前导斜杠:
RewriteEngine On
RewriteRule ^uk/page2/(.*)/$ /uk/page2/index.php?pg=$1
答案 1 :(得分:2)
天儿真好,
我建议在高级别启用RewriteLog配置选项,以检查实际发生的情况。
Has AllowOverides been enabled?</obvious> (-:
好像你运气不好.htaccess
令人难以置信的mod_rewrite在每个目录上下文中提供了URL操作,即在.htaccess文件中,尽管这些操作在URL被转换为文件名后很长时间才能实现。它必须是这种方式,因为.htaccess文件存在于文件系统中,因此处理已经到了这个阶段。换句话说:根据此时的API阶段,任何网址操作都为时已晚。 - Apache mod_rewrite doc.s(强调我的)
答案 2 :(得分:0)
最后可能是尾随斜杠,所以改变一下:
RewriteEngine On
RewriteRule /uk/page2/(.*)/$ /uk/page2/index.php?pg=$1
到此:
RewriteEngine On
RewriteRule ^(.*)uk/page2(/?)(.*)$ /uk/page2/index.php?pg=$3
您应该检查的另一件事是您在httpd.conf文件中将AllowOverride设置为All,而不是None。如果设置为None,则不允许使用.htaccess执行任何操作。