.htaccess REDIRECT_LOOP阻止PHP_SELF正确执行函数

时间:2014-10-11 03:50:21

标签: .htaccess redirect

以下重定向阻止具有php_self的表单正确地在同一页面上运行函数。 我在这台服务器上出于某种原因无法删除尾部斜杠,所以我选择了这条路线。发现它很有趣!页面刷新但不运行代码。更改页面以防止重定向将重新开始工作。有什么想法吗?

Options +FollowSymLinks

RewriteEngine On
RewriteBase /

DirectorySlash Off

RewriteRule ^bio$ /bio/index.php [L,E=LOOP:1]

RewriteCond %{ENV:REDIRECT_LOOP} !1
RewriteRule ^bio/$ /bio [R=301,L]

RewriteCond %{ENV:REDIRECT_LOOP} !1
RewriteRule ^bio/index.php$ /bio [R=301,L]

RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
RewriteRule (.*)\.php$ $1 [R=301]

RewriteRule (.*)/index$ $1/ [R=301]

# remove slash if not directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]

1 个答案:

答案 0 :(得分:1)

如果您不想在目录末尾DirectorySlash,则需要关闭/

DirectorySlash off

DirectoryIndex index.php
RewriteEngine On

RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^ - [L]

RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
RewriteRule ^(.+?)\.php$ /$1 [L,R=301]

RewriteRule ^(.+?)/index$ /$1 [L,R=301]

# remove trailing slash
RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s]
RewriteRule ^(.+?)/$ /$1 [R=302,L]

# route to bio/index.php if request is /bio
RewriteRule ^bio$ bio/index.php [L,NC]

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]