.htaccess - mod_rewrite适用于某些页面但不适用于其他页面

时间:2011-10-20 22:52:41

标签: php .htaccess mod-rewrite

我遇到了一个奇怪的问题。

我在 /public_html/academics/courses.php

位置有一个文件

我希望.htaccess mod_rewrite URL如下:

原始网址: http://niecdelhi.ac.in/academics/courses/

在mod_rewrite之后: http://niecdelhi.ac.in/index.php?inc=/academics/courses/

基本上,我想要的是mod_rewrite index.php的所有URL,并将URL作为名为“inc”的参数传递。然后,在index.php中我通过include包含文件($ _ GET ['inc']);

mod_rewrite适用于网站上的某些页面。我在$ inc中获取了URL。但是,它根本不适用于其他页面。

例如,考虑服务器上存在的两个文件:

  1. http://niecdelhi.ac.in/academics/courses.php
  2. http://niecdelhi.ac.in/academics/library.php
  3. mod_rewrite正在为第一个工作,文件包含在index.php中 但是对于第二个我得到了普通的现有文件。不是index.php中包含的那个

    我希望你能理解我所面临的问题。请告诉我解决方案。

    .htaccess文件

    Options +FollowSymlinks
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_URI} !\..*$ [NC]
    RewriteCond %{QUERY_STRING} (.*) [NC]
    RewriteRule ^(.*)$ index.php?inc=$1&%1 [L]
    

    页面工作:http://niecdelhi.ac.in/academics/courses/

    页面无效:http://niecdelhi.ac.in/academics/library/

    *的 修改 *

    在任何地方都没有其他.htaccess。虽然,我已经找到了关于正在发生的事情的线索。问题只发生在Linux服务器上。代码在Windows服务器中正常运行。我有一台带有PHP 5.2.16的Linux服务器。

    此外,有些网页有效,有些则没有。我发现只有那些页面正在工作,它们在同一目录中具有相同名称的文件夹。例如,学术目录如下所示:

    academics/
        |_ courses/
        |    |_ mba.php
        |    |_ mca.php
        |_ courses.php
        |_ library.php
    

    现在,由于courses.php在同一目录中有一个名称相同的文件夹。它使mod_rewrite很好。但是library.php没有得到mod_rewrite。

    Linux服务器正在为实际存在的文件跳过mod_rewrite。为什么呢?

1 个答案:

答案 0 :(得分:0)

我唯一的猜测是你的结构中有一个.htaccess(最明显的内部/学术/)覆盖了“库”的规则。

该文件夹中是否有另一个mod_rewriting规则正在为LIBRARY这个词开头,可能会搞乱你的重写。

请注意,它也可能是本机apache问题。例如,在ubuntu中,默认情况下在版本10.10(我认为就是这样),如果你有一个/ javascript /文件夹,它将被短路到/ usr / lib / javascript或类似的东西......

检查httpd.conf中所有可能的mod重写实例,所有动态加载的.conf文件,你的vhost文件以及文档根目录的路径......