2

私のウェブサイトのすべてのページは、次のように URL の書き換えに対応しています。

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

しかし、2 つの URL が機能しておらず、どちらも URL に「インデックス」が含まれているため、これが原因であると思われます。

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

これらの URL404は見つかりませんでした。

Web サイトは 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.phpindex.html、 ... だけではありませんindex)。

これを解決する理由と方法はありますか?

4

2 に答える 2

2

オプション -MultiViews は、/inventory/index が mod_negotiation によってディスク上の index.php にマップされるのを防ぎます。

ディレクトリごとの mod_rewrite で %{REQUEST_FILENAME} を使用しているため、URL をファイル名にマップした可能性のある mod_negotiation/mod_dir などのモジュールの結果が暗黙的に表示されます。

于 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 に答える