代码之家  ›  专栏  ›  技术社区  ›  mk12

Apache URL重写不起作用

  •  0
  • mk12  · 技术社区  · 15 年前

    在httpd.conf文件中 AllowOverride FileInfo . 在我的Web服务器顶层的.htaccess文件和所有其他文件中,我有:

    RewriteEngine On
    RewriteRule ^downloads/?$ index.php?page=downloads [L,NC]
    

    但它不起作用。mywebsite/downloads和mywebsite/downloads/always give a 404 not found.你知道为什么吗?谢谢。(mywebsite/index.php?页面=下载 工作)。

    每次我修改Apache时都会重新启动它。

    当我把上面的代码放到httpd.conf中时,这个网站甚至不会加载任何东西,只是一个空白的,永远旋转的Safari轮子。

    如果我能做到就好了 RewriteEngine On ,但是如果我做了其他任何事情(rewritebase、rewriterule),Web浏览器会花费很多时间尝试加载,最后给出以下错误:

    Safari can_t打开页面__ http://mk12.gotdns.com/ _157;因为此页所在的服务器没有响应。

    有人知道怎么了吗?

    编辑:例如,我可以通过重写来禁止CSS文件,并且它可以工作,但是从下载到index.php有什么规则吗?page=downloads会使服务器不响应(见上文),无论哪个页面,网站都不会加载。有什么想法吗?

    4 回复  |  直到 15 年前
        1
  •  1
  •   Azeem.Butt    15 年前

    调试重写规则的最佳方法是启用重写日志记录,这样您就可以查看出了什么问题。

        2
  •  0
  •   BYK    15 年前

    在“下载”前面加一个斜线,你累了吗?

    RewriteRule ^/downloads/?$ index.php?page=downloads
    

    编辑:尝试以下代码:

    RewriteEngine On
    RewriteBase /
    RewriteRule ^downloads/?$ /index.php?page=downloads
    
        3
  •  0
  •   Will Barrett    15 年前

    我将尝试在下载后删除尾随斜杠和问号,并在index.php之前删除前导斜杠。

    RewriteEngine On
    RewriteBase /
    RewriteRule ^downloads$ index.php?page=downloads.
    
        4
  •  0
  •   mk12    15 年前

    它奏效了!!我把代码放错地方了。它在httpd.conf中,但在最后。将其移动到<目录>中并保持良好状态。谢谢你的帮助!

    编辑:另外,我发现如果标志是这样的,它将不起作用: [L, NC] . 它必须是 [L,NC] (没有空格)。

    因此,这两个问题是它不在<directory“/library/webserver/documents”>中,标志之间存在空格。希望这能在将来帮助别人。