我正在尝试在 apache 上为 xampp 启用 mod rewrite,我取消了代码的注释
LoadModule rewrite_module modules/mod_rewrite.so
我也有 AllowOverride All,但它仍然不起作用,
我收到错误 400,内容是
错误的请求!
您的浏览器(或代理)发送了该服务器无法理解的请求。
所以我尝试安装带有 apache 的 zend server 社区版,然后我做了以下所有操作,并且 url 重写成功了,但是这次 web 应用程序内的公共文件夹在 apache 中被隐藏了,当我尝试复制公共文件夹的内容并在根目录中访问它时,我得到了错误 500,它说
内部服务器错误
服务器遇到内部错误或配置错误,无法完成您的请求。
如果有人能帮助我设置其中一个,我将不胜感激,我正在尝试使用 zend 框架。
谢谢
.htaccess
SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
php_flag short_open_tags on
Apache 错误日志:
请求 GET /webfolder/zf-tutorial/public/index/add HTTP/1.1 中的 URI 无效,引用者: http://localhost/webfolder/zf-tutorial/public/
更新:我将 web 应用程序移至 apache 中的 htdocs,现在一切正常,之前我将根目录指向以下目录
Alias /webfolder/ "C:/Users/Amir/Documents/webfolder/"
Alias /webfolder "C:/Users/Amir/Documents/webfolder"
知道为什么它之前不起作用吗?谢谢
答案1
AllowOverride 启用 .htaccess 文件。我猜是你网站路径中的 .htaccess 有问题。
如果 .htaccess 文件中有一些无效的语法,您将收到服务器 500 错误。
打开重写还不够,你必须将 RewriteEngine On 行添加到你的虚拟主机或 .htaccess 文件中,然后按照重写规则进行操作
直流
答案2
您的重写规则存在冲突且顺序错误。所有重写规则必须符合后RewriteEngine 指令。
删除第一行,并从最后一个 RewriteRule 中删除相对路径:
SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
这个 .htaccess 应该是在你的 public/ 目录。
请参阅手动的。投入更多 RewriteRules 并不是解决方案。