2

我网站的所有页面都使用 url 重写,例如:

http://localhost/inventory/orga/organization/manage

但是 2 个 url 不起作用,并且都在 URL 中包含“index”,所以我怀疑这是原因:

http://localhost/inventory/index
http://localhost/inventory/index/home

这些 URL 导致404未找到。

该网站是一个 PHP 应用程序。这是 .htaccess 文件:

RewriteEngine on
RewriteBase /inventory/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php  

我检查了 Apache 配置我找不到任何问题。DirectoryIndex 是 Ubuntu 的默认索引(index.php, index.html, ... 但不仅仅是index)。

知道为什么以及如何解决这个问题吗?

4

2 回答 2

2

选项 -MultiViews 将阻止 /inventory/index 通过 mod_negotiation 映射到磁盘上的 index.php。

由于您在每个目录 mod_rewrite 中使用 %{REQUEST_FILENAME} ,因此您隐含地看到了任何模块的结果,例如 mod_negotiation/mod_dir 可能已将 URL 映射到文件名,例如。

于 2013-07-30T10:56:37.927 回答
0

这可能是因为您的应用程序的基本文件确实是 index.php,对吗?您的 .htaccess 文件表示,当有一个具有该名称的真实文件时,请使用该名称(这对图像文件、js 等有意义)

我正在运行与您非常相似的东西,但我没有这个问题。看看我的 .htaccess:

RewriteEngine On

#When using the script within a subfolder, put this path here, like /mysubfolder/
RewriteBase /myprojectsfolder/

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

当您删除最后一个 .htaccess 行时会发生什么?

于 2013-07-28T19:55:20.693 回答