0

私はubuntuにいて、ニスキャッシュを持っています。問題をたくさん検索しましたが、見つかりませんでした。

私が入るとき

http://127.0.0.1/soccer

このURIは、soccer.phpが必要であることを意味します。私のブラウザは、私をにリダイレクトします。

http://127.0.0.1:8000/soccer/?tab_id=soccer 

しかし、私がタイプすると、

http://127.0.0.1/soccer/

これは問題なく動作し、興味深いのは、この問題は「サッカー」と「保存」のキーワードでのみ発生することです。

これは私の.htaccessです

# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
# Or, compress certain file types by extension:
<files *.php>
SetOutputFilter DEFLATE
</files>
<files *.html>
SetOutputFilter DEFLATE
</files>
RewriteEngine On
Options -MultiViews
RewriteRule ^([//0-9a-zçöşığüA-ZÇÖŞİĞÜ-]+)$ tab.php?tab_id=$1 [QSA,L]
4

1 に答える 1

0

ここで起こっているのは、おそらくmod_dirがURIの処理を妨害していることです。デフォルトでは、mod_dirがロードされると、末尾のスラッシュが欠落している場合にディレクトリにマップされると見なされるURIの末尾に末尾のスラッシュが追加されます。これにより、URL /ファイルマッピングパイプラインによってディレクトリがファイルによって処理されるように見える場合に問題が発生します(たとえば、mod_rewriteを介して)。これはパイプラインのさらに下流で発生するため、mod_dirは認識しません。したがって、mod_dirはURIをリダイレクトとしてマークします。 、その後、パイプラインのさらに下(または上)で他のことが起こり、最終的に、リダイレクトが発生してはならないときにリダイレクトされた複数のモジュールによって処理されたURIが生成されます。

明確にするために、 「 URIの末尾にスラッシュを追加する」という意味の場合、mod_dir 302は、末尾のスラッシュで終わることを除いて、ブラウザーを同じURIにリダイレクトすることを意味します。

あなたはいくつかのことを試すことができます:

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

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

    RewriteEngine On
    Options -MultiViews
    
    RewriteRule ^([//0-9a-zçöşığüA-ZÇÖŞİĞÜ-]+)$ /$1/ [L,R=301]
    RewriteRule ^([//0-9a-zçöşığüA-ZÇÖŞİĞÜ-]+)/$ tab.php?tab_id=$1 [QSA,L]
    
于 2012-12-12T22:25:10.017 に答える