我有这个使用Zend Framework(PHP)的URL http://xxxxxxxxx.com/account/session/login/redirect/%2Fhotel%2Frooms%2Findex%2Fhot_id%2F1。借助.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [NC,L]
事情是我得到了404找不到。为了确保它是Apache,我退出index.php主文件就在它启动时,apache仍然报告404.在退出之前没有php的代码执行。
修改
我的域的apache domlog显示了这一行
190.78.208.30 - - [25/Aug/2011:17:48:17 -0430] "GET /account/session/login/redirect/Fhotel%2Frooms%2Findex%2Fhot_id%2F1 HTTP/1.1" 404 25821 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0"
但是error_log
中没有关联的行编辑2
如果有用我正在运行Apache 2.2.19,PHP 5.3.6,cpanel 11.30.2,CentOS 5.6
请注意404未找到。当我在执行任何其他操作之前退出index.php时,404仍会出现。我可以肯定.htaccess正在阅读中。根据建议我提出了
SetEnv MYENV 1
并且出现在同一域中的phpinfo()中。我只是仔细检查了我的access_log和error_log,并保持如上所述。
为什么会发生这种情况?
答案 0 :(得分:0)
您确定Apache正在读取您的.htaccess文件吗? 确保按:
您有权覆盖网站目录中的值。要有这个,你应该在你的Apache配置文件中有这样的东西:
<目录/ var / www / html>
AllowOverride All
< /目录>
将/ var / www / html替换为您网站公共目录的路径
Apache有权读取.htaccess文件。
这样Apache可以在.htaccess文件中读取和应用配置。
要测试它,请在.htaccess文件中设置一个环境变量:
SetEnv MYENV 1
然后在index.php文件中使用phpinfo()函数并搜索环境变量。如果phpinfo()输出中没有环境变量,则意味着Apache不会解析.htaccess文件。