0

我在 ubuntu 上,我有清漆缓存,我搜索了很多问题,但找不到,

当我进入

http://127.0.0.1/soccer

这个 uri 意味着需要 football.php,我的浏览器将我重定向到,

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

但是当我打字时,

http://127.0.0.1/soccer/

这个很好用,有趣的是,这个问题只发生在“soccer”和“save”关键字中,

这是我的 .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. 通过包含一个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 回答