我网站的所有页面都使用网址重写,例如:
http://localhost/inventory/orga/organization/manage
但是2个网址不起作用,并且网址中都包含“index”,所以我怀疑这是原因:
http://localhost/inventory/index
http://localhost/inventory/index/home
这些网址导致找不到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
)。
知道为什么以及如何解决这个问题?
答案 0 :(得分:2)
选项-MultiViews将停止/库存/索引通过mod_negotiation映射到磁盘上的index.php。
由于你在每个目录的mod_rewrite中使用%{REQUEST_FILENAME},你隐含地看到任何模块的结果,比如mod_negotiation / mod_dir可能已经将URL映射到文件中,例如,
答案 1 :(得分:0)
这可能是因为您的应用程序的基本文件IS INDEED是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行时会发生什么?