Apache vhost与CI .htaccess冲突

时间:2019-02-17 20:39:57

标签: php apache .htaccess codeigniter mod-rewrite

我正在通过def test_collumntype_appuser(db_handle): appuser = Appuser( username="George A", email="g.a@yahoo.com", phonenumber="abcd" ) db_handle.session.add(appuser) with pytest.raises(Exception): db_handle.session.commit() The Method looks like below - class Appuser(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(256), nullable=False) email = db.Column(db.String(256), nullable=False) phonenumber = db.Column(db.Integer, nullable=False) 虚拟主机文件中的以下代码将网站的子文件夹重写为子域:

Apache

所以https://example.com/web/crm/ 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:// folder .example.com

我也正在使用folder.htaccess网址中隐藏/index.php /

codeigniter

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我收到505内部错误,一旦我删除了.htaccess中的行或仅通过folder.example.com/index.php/访问简单网站(日志中没有任何内容)

我想修复子域的重写冲突

2 个答案:

答案 0 :(得分:0)

好的,有两个建议:

  1. 很高兴知道是什么特定的服务器端错误导致了HTTP 505。

    请从服务器日志中复制/粘贴准确的消息到您的帖子中。

  2. 很高兴知道确切地解释您的重写规则的方式。

    请启用以下日志记录:

  

How to debug Apache mod_rewrite

     

Apache Module mod_rewrite

     

mod_rewrite提供了它在trace1到   trace8日志级别。日志级别可以专门设置为   使用LogLevel指令的mod_rewrite:最高级别的调试,否   记录操作,而trace8表示实际上所有操作   被记录。

     

示例

LogLevel alert rewrite:trace6

George Samarguliani添加了此注释,它解释了HTTP 505错误:

  

在虚拟主机文件作业中添加重写日志规则后,apache无法启动   httpd.service失败,因为控制进程退出并出现错误   码。请参阅“ systemctl状态httpd.service”和“ journalctl -xe”以了解   详细信息。

我将上面的虚拟主机代码片段复制/粘贴到了第一个方便的Apache配置验证器https://htaccess.madewithlove.be/中,并得到了以下内容:

htaccess.MadeWithLove validator

所以现在至少我们知道是什么导致了服务器端错误:Apache vhost配置。

新建议:

  1. 至于“ index.php”,我什至都不认为您需要或想要重新编写规则。

    只需配置“ DirectoryIndex”,就像这样:

    <Directory /myapp>
      DirectoryIndex index.php
    </Directory>
    
  2. 关于URL的其余部分(例如“ http://example.com/web/crm/build/`),请在示例之前/之后更新您希望重定向如何实际起作用的示例。

  3. 关于使用.httaccess / mod_rewrite规则,有很多很好的“ howtos”,其中有很好的示例。例如:

答案 1 :(得分:0)

固定

<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>