子目录中的.htaccess执行顺序(wordpress / laravel)

时间:2013-02-16 18:59:10

标签: wordpress .htaccess laravel laravel-4

早上好!我的网站目前的结构如下:

  1. http://www.mywordpressite.com/
  2. http://www.mywordpressite.com/.htaccess
  3. http://www.mywordpressite.com/portal/
  4. http://www.mywordpressite.com/portal/.htaccess
  5. 我对宇宙的理解是,如果我导航到门户网站,(4)的.htaccess将解析而不是(或优先于)(2)的.htaccess。实际上,我观察到即使在导航到(3)http://www.mywordpressite.com/portal/时,(2)的.htaccess也会接管。

    你可以想象,根目录是一个带有标准wordpress .htaccess文件的wordpress网站:

    /。htaccess的

    <files wp-config.php>
    Order deny,allow
    deny from all
    </files>
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    

    门户网站是Laravel门户网站,带有标准的Laravel .htaccess文件

    /portal/.htaccess

    <IfModule mod_rewrite.c>
        Options -MultiViews
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
    </IfModule>
    

    我注意到的是,如果我删除(2)/.htaccess,突然之间,一切都与门户网站一起工作,所以肯定会发生冲突。我不会在这里发布我的vhost内容。因为.htaccess的工作/他们应该做的事情 - 只是不同时:

    /.htaccess将输入与文件或目录不对应的所有输入重定向到index.php文件,以便更好地解析。

    /portal/.htaccess做了类似的事情。

    我注意到的是,对于两个.htaccesses,如果我导航到通常由门户网站.htaccess解析的路线,例如http://www.mywordpressite.com/portal/this/is/a/route我最终从我的获得404 wordpress 网站(例如,它将网址传输到wordpress根目录的/index.php文件中),当然该网页在WP中不存在。

    当我删除wp /.htaccess时,当然wordpress不再正常工作,但突然之间,门户网站的.htaccess开始正常工作,http://www.mywordpressite.com/portal/this/is/a/route通过管道url参数触发相应的路由进入/portal/index.php进行处理。

    这似乎是我的倒退。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我认为您的问题在于您在门户网站访问文件中遗漏了RewriteBase

RewriteBase /portal/

我不是超文本访问天才,所以我无法解释当你把它留下时会发生什么。但我确信这是解决方案。