【发布时间】:2011-12-12 04:40:30
【问题描述】:
我陷入了一个奇怪的问题。
我在 /public_html/academics/courses.php
位置有一个文件我希望 .htaccess 修改 URL,如下所示:
原始网址:http://niecdelhi.ac.in/academics/courses/
mod_rewrite 之后:http://niecdelhi.ac.in/index.php?inc=/academics/courses/
基本上,我想要的是将所有 URL 修改为 index.php 并将 URL 作为名为“inc”的参数传递。然后,在 index.php 中,我通过执行 include($_GET['inc']);
来包含该文件mod_rewrite 适用于网站上的某些页面。我得到了 $inc 中的 URL。但是,它根本不适用于其他页面。
例如,考虑服务器上存在的两个文件:
- http://niecdelhi.ac.in/academics/courses.php
- http://niecdelhi.ac.in/academics/library.php
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。为什么会这样??
【问题讨论】:
-
文件树中htaccess文件下面的另外两个文件吗?
-
您确定您的链接指向正确的地址并添加了查询字符串吗?而不是相对路径?
-
@NVTOnline - 是的,这些文件位于文件树中相同的 .htaccess 之下..
标签: php .htaccess mod-rewrite