我制作了一个简单的.htaccess文件来揭露问题。
我希望对文件夹发出的所有请求都重定向到子文件夹文件“app / index.php”
RewriteEngine On
RewriteRule (.*) app/index.php [QSA]
这可以使用我的主机的基本网址(例如http//myname.hosting.com/htaccessFolder
问题是我有一个指向此文件夹的域,当访问它时,服务器返回Internal Server Error 500
。
如果我这样做:
RewriteEngine On
RewriteRule (.*) somefile.php [QSA]
重定向仅在文件不存在时才起作用(404未找到错误)。当文件存在时,我也得到500错误。
我暂时没有成功地询问托管支持..
编辑:
奇怪的是,当我写道:
RewriteEngine On
RewriteRule (.*) somefile.txt [QSA]
它适用于机器人,所以似乎问题来自执行php文件..
EDIT2:
这是我尝试使用的真正的.htaccess文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#RewriteCond %{REQUEST_FILENAME} -f
#RewriteRule .? - [L]
#####################
RewriteRule (.*) app/public/$1
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteRule app/public/(.*) $1
#####################
#RewriteCond %{REQUEST_FILENAME} question2answers/(.+)
#RewriteRule .? - [L]
#####################
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule (.*) index.php [L,QSA]
</IfModule>
你可以看到只有公共区块没有被评论,但当我去网站时我得到了这个: 请求的网址/cgi-bin/php5.fcgi/index.php/index.php/index.php/index.php/index.php/index.php/index.php/in .....
但我在公共文件夹中请求一个文件(如http://website.com/css/style.css(在public / css中),它按预期工作。 当我没有评论最后一个块时,我得到500错误。
答案 0 :(得分:1)
好的,我找到了避免重定向的解决方案:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#####################
RewriteCond %{QUERY_STRING} stop
RewriteRule (.*) - [L]
#####################
RewriteCond %{REQUEST_URI} question2answers/(.*)
RewriteRule (.*) $1?htaccess=stop [L,QSA]
#####################
RewriteRule (.*) app/public/$1
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule (.*) $1?htaccess=stop [L]
RewriteRule app/public/(.*) $1
#####################
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php?htaccess=stop [L,QSA]
</IfModule>
我不明白,但它有效。
答案 1 :(得分:0)
尝试添加htaccess文件:
Options -Multiviews
它会关闭内容协商,这有时会影响URL如何映射到扩展名为php的文件。