htaccess重定向到另一个端口并将关键字附加到我的uri

时间:2012-12-12 19:07:32

标签: php .htaccess

我在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]

1 个答案:

答案 0 :(得分: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。这使得mod_dir不会重定向浏览器,而是note that there are other consequences to turning this off。您可以在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]