情况如下:我在古老的服务器上运行了很好的PHP脚本(Apache / 2.2.3,PHP作为模块),我需要将它移动到“新”服务器(Apache / 2.2.16( Debian),PHP作为fcgi / suhoshin)...至少我的ISP告诉你。
我有一个非常简单的.htaccess文件,可以在“旧”服务器上正常工作:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/css #Just an exception for domain.com/css dir
RewriteRule ^([^/]+)/?$ %{DOCUMENT_ROOT}/index.php/$1 [NE,L]
从我学习mod_rewrite docs和网站行为时,
等,URL末尾的optinal斜杠。 其他“301”重定向是根据数据库结果/设置在PHP中制作的,现在并不重要。
现在我的问题是:当我将此.htaccess文件+ PHP脚本传输到“新”服务器时,我在浏览器中收到此错误消息:
未指定输入文件。
我一直在尝试几个小时学习正则表达式和Apache文档,但我无法使其正常工作。我猜两台服务器上的Apache2配置有些不同,但找不到它。甚至试图在index.php的开头放置echo以确保此错误不是来自PHP,但没有:-(我确定.htaccess支持已打开,因为我可以在输入错误的指令时生成错误。 regular_expressions guru。有人可以帮忙吗?
更新:通过将其更改为:
解决RewriteRule ^([^/]+)/?$ %{DOCUMENT_ROOT}index.php [NE,L]
有兴趣/ $ 1不是必需的,但是我必须从$ _SERVER [“PATH_INFO”]将PHP更改为$ _SERVER [“REQUEST_URI”]。
答案 0 :(得分:1)
你可以尝试这段代码:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/css [NC]
RewriteRule ^([^/]+)/?$ /index.php/$1 [NE,L]