0

こんにちは私は次の問題を抱えています:私はこのようにそれらをロードするいくつかのページ(phpを含む)を持っています

http://www.domain.com/news/

彼らは完璧に動作します。しかし、末尾のスラッシュを削除すると

http://www.domain.com/news

これが起こります->http://www.domain.com/news/?page=news&request=

これが私のhtaccessルールです:

RewriteEngine on

<IfModule mod_gzip.c>
    mod_gzip_on       Yes
    mod_gzip_dechunk  Yes
    mod_gzip_item_include file      \.(html?|txt|css|js|php|pl|jpg|png|gif)$
    mod_gzip_item_include handler   ^cgi-script$
    mod_gzip_item_include mime      ^text/.*
    mod_gzip_item_include mime      ^application/x-javascript.*
    mod_gzip_item_exclude mime      ^image/.*
    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>




Options -Indexes
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)(.*)$ /index.php?page=$1&request=$2

PS。ルートドキュメントにもニュースフォルダがあるので、それでいいですか?

4

2 に答える 2

1

はい、news/ルートにフォルダがあるためです。書き換え条件は、ファイル(つまり!-f)またはディレクトリ(!-d)ではないものを探しています。news/ルートのディレクトリの名前を変更してみてください。

必要に応じて、次のようdomain.com/newsにして強制的に書き換えることができます。domain.com/news/

RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301]
于 2012-12-12T23:13:54.320 に答える
0

これはmod_dirの問題です。URLがディレクトリにマップされていると判断した場合(後でそうでないと判断された場合でも)、ブラウザをリダイレクトして、末尾にスラッシュが追加されるようにします。私が別の質問に投稿したこの最近の説明を参照してください

DirectorySlash他の回答と同様に、影響を受けるすべてのURLをオフにするか、 mod_rewriteを介して末尾のスラッシュでリダイレクトされるようにすることができます(書き換えリダイレクトが同じモジュール内で行われるようにするため)。

  1. を含めてmod_dirをオフにしDirectorySlash Offます。これにより、mod_dirがブラウザをリダイレクトしないようになりますが、これをオフにすると他の結果が生じることに注意してください。そのディレクティブをhtaccessファイルに追加できます。

  2. mod_rewriteで末尾のスラッシュを処理します。

    RewriteEngine On
    Options -MultiViews
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !/$
    RewriteRule ^(.*)$ /$1/ [L,R=301]
    
于 2012-12-12T23:45:15.127 に答える