[英]Apache vhost conflicts with CI .htaccess
我正在通過Apache
vhost文件中的以下代碼將網站的子文件夾重寫為子域:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. example.com
RewriteCond %{HTTP_HOST} ^(www\.)?(([^\.]+)\.){1}example.com$
RewriteCond /var/www/example.com/web/crm/build/%3 -d
RewriteRule ^/(.*) /crm/build/%3/$1
因此https://example.com/web/crm/ folder
= https:// folder
.example.com
我也使用.htaccess
在codeigniter
url中隱藏/index.php/
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
AddDefaultCharset utf-8
example.com/web/crm/folder
工作正常
folder.example.com
我收到505內部錯誤,一旦我刪除了.htaccess中的行,或者只是通過folder.example.com/index.php/簡單訪問了網站,它就會變好(日志中什么都沒有顯示)
我想修復子域的重寫沖突
好的,有兩個建議:
知道是什么具體的服務器端錯誤導致了HTTP 505,這將是很高興的。
請復制/粘貼服務器登錄中的確切消息到您的帖子中。
確切地知道您的重寫規則是如何解釋的也很高興。
請啟用日志記錄,如下所示:
mod_rewrite在trace1到trace8日志級別提供其操作的詳細日志記錄。 可以使用LogLevel指令專門為mod_rewrite設置日志級別:進行級別調試時,不記錄任何操作,而trace8表示實際上記錄了所有操作。
例
LogLevel alert rewrite:trace6
George Samarguliani添加了此注釋,它解釋了HTTP 505錯誤:
在vhost文件中為httpd.service的作業添加重寫日志規則后,apache無法啟動,因為控制過程退出並顯示錯誤代碼,因此失敗。 有關詳細信息,請參見“ systemctl狀態httpd.service”和“ journalctl -xe”。
我將上面的虛擬主機代碼片段復制/粘貼到了第一個方便的Apache配置驗證器https://htaccess.madewithlove.be/中 ,並得到了:
所以現在至少我們知道是什么導致了服務器端錯誤:Apache vhost配置。
新建議:
固定
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.