gpt4 book ai didi

apache - "RewriteEngine not allowed here"由父目录中的 htaccess 引起

转载 作者:行者123 更新时间:2023-12-02 01:34:20 32 4
gpt4 key购买 nike

目前我正在使用 OSX Server (Yosemite) 来托管一堆 PHP 应用程序,其中一些应用程序在网站文档根目录下有一个子目录用于子域。自更新到 Yosemite 版本的 OSX Server 以来,这些子域一直在抛出 500 错误,错误日志中提到 RewriteEngine not allowed here

经过调查,我已确认父域站点和子域站点都配置了 AllowOverride All,并且 .htaccess 文件在非子域站点上正常工作。此外,我发现重命名或以其他方式从父目录中删除 .htaccess 文件会导致子域再次开始工作。

/original_site_doc_root <- doc root for regular site
.htaccess
index.php
...
subdomain/ <- configured as a seperate site in osx server as a subdomain
.htaccess
index.php
...

我所做的每一点谷歌搜索最终都指的是确保 mod_rewrite 已安装并且 AllowOverride 已正确配置。

我的问题是,如何让 Apache 停止在子域网站上抛出 500 错误?

编辑

这是让我伤心的子域的 .htaccess 文件(对域、目录和页面进行模糊处理以保护无辜者)

RewriteEngine On
Options +FollowSymlinks -Indexes
RewriteCond %{HTTP_HOST} ^www\.m\.somesite\.com$ [NC]
RewriteRule ^(.*)$ http://m.somesite.com/$1 [L,R=301]
RewriteBase /

# supress php errors
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0

# enable PHP error logging
php_flag log_errors on
php_value error_log /some/fuzzed/dir

RewriteRule ^$ /index.php [L]
RewriteRule ^home$ /home.php [L]

RewriteRule ^some-page1$ /some-page1.php [L]

RewriteRule ^some-page2$ /some-page2.php [L]

RewriteRule ^some-page3/(.*)$ /some-page32.php [L]
RewriteRule ^some-page3(\/?)$ /some-page32.php [L]

RewriteRule ^some-page4/(.*)$ /some-page4.php [L]
RewriteRule ^some-page4(\/?)$ /some-page4.php [L]

RewriteRule ^some-page5/(.*)$ /some-page5.php [L]
RewriteRule ^some-page5(\/?)$ /some-page5.php [L]

RewriteRule ^some-page6/(.*)$ /some-page6.php [L]
RewriteRule ^some-page6(\/?)$ /some-page6.php [L]

父目录/非子域站点的 .htaccess 或多或少相似,唯一真正相关的区别是前两行:

RewriteEngine On
Options +FollowSymlinks -Indexes -Multiviews

最佳答案

刚遇到同样的问题(在最近更新 Apache2 之后)并找到了解决方案。

假设您的域是 example.com,目录是 /var/www/example/,并且您有一个名为 api.example.com 的子域 与目录 /var/www/example/api/

尝试使用以下内容:

<VirtualHost *:80>
ServerName api.example.com
DocumentRoot /var/www/example/api

<Directory /var/www/example/>
AllowOverride FileInfo Options
</Directory>

<Directory /var/www/example/api/>
Require all granted
Options +FollowSymLinks +MultiViews +ExecCGI -Indexes
AllowOverride all
Order allow,deny
Allow from all
</Directory>

</VirtualHost>

这应该有效!

关于apache - "RewriteEngine not allowed here"由父目录中的 htaccess 引起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32084190/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com