5

URLからindex.phpを削除しようとしています:

これは動作します

http://server/bw/index.php/test

これは機能しません

http://server/bw/test

.htaccessを変更して、Webで視聴しようとすると、次のようになります。

RewriteEngine On
RewriteBase /bw/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

私はそれをこのように編集してみます:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

またはこのように:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /bw/index.php [QSA,L]

またはこのように:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d

しかし、私がそれにアクセスしようとするhttp://server/bw/testと、私は言います:

Not Found

The requested URL /bw/test was not found on this server.

Apache/2.2.15 (CentOS) Server at server Port 80

内部httpd.conf LoadModule rewrite_module modules/mod_rewrite.soが有効になっていることを確認します。今何をすべきかわかりません。

どうすれば解決できますか?私を助けてください!

4

3 に答える 3

6

これを試してみてください。たとえば、WordPressで使用されています

RewriteRule . index.php [L]

またはこれは、たとえばLavavelPHPFrameworkによって使用されます

RewriteRule ^(.*)$ index.php/$1 [L]

追加することも検討してください

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRuleの前に、既存のファイルだけでなく、既存のディレクトリも除外します。しかし、それはあなた次第です。

于 2013-01-08T22:48:26.740 に答える
1

私の場合、更新してから、内部500エラーを回避するためAllowOverride Allに実行してから、Apacheを再起動します。sudo a2enmod rewriteservice apache2 restart

于 2015-07-14T09:18:49.963 に答える
0

私にとって、私はDehalionの答えからこの行を使用して動作するものを得ました:

RewriteRule . index.php [L]

したがって、index.php(または任意のxyz.php)ファイルはリクエストURLに表示されません

http://localhost/demo1/mycompany/hello/Jim

次の注意事項があります。

  1. このルートを定義しました:

    $ app-> get('/ mycompany / hello /:name'、doHello);

  2. ルート要素(ルート/ mycompany / ..の)ファイルの名前でもあります。
    つまり、ルートは「mycompany.php」というファイルに存在します

はい、それはちょっとしたハックです...しかし、apacheconfigが混乱している/威圧的であることがわかったので:)...このソリューションは要件を満たすのに十分安定していると思います。

于 2013-08-04T20:30:14.500 に答える