在 xampp 上启用 apache mod rewrite 的问题

在 xampp 上启用 apache mod rewrite 的问题

我正在尝试在 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 并不是解决方案。

相关内容