我遇到了一个奇怪的问题。
我在 /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。但是,它根本不适用于其他页面。
例如,考虑服务器上存在的两个文件:
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。为什么呢?
答案 0 :(得分:0)
我唯一的猜测是你的结构中有一个.htaccess(最明显的内部/学术/)覆盖了“库”的规则。
该文件夹中是否有另一个mod_rewriting规则正在为LIBRARY这个词开头,可能会搞乱你的重写。
请注意,它也可能是本机apache问题。例如,在ubuntu中,默认情况下在版本10.10(我认为就是这样),如果你有一个/ javascript /文件夹,它将被短路到/ usr / lib / javascript或类似的东西......
检查httpd.conf中所有可能的mod重写实例,所有动态加载的.conf文件,你的vhost文件以及文档根目录的路径......