0

早上好堆栈!我的网站目前的结构是这样的:

  1. http://www.mywordpressite.com/
  2. http://www.mywordpressite.com/.htaccess
  3. http://www.mywordpressite.com/portal/
  4. http://www.mywordpressite.com/portal/.htaccess

我对宇宙的理解是,如果我导航到门户,(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,一切都可以在门户网站上运行,所以肯定会发生冲突。我不会在这里发布我的虚拟主机的东西,因为 .htaccess 的工作/做他们应该做的事情 - 只是不同时:

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

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

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

当我删除 wp /.htaccess 时,当然 wordpress 不再正常工作了,但是突然之间,门户网站的 .htaccess 开始正常工作并且http://www.mywordpressite.com/portal/this/is/a /route通过将 url 参数传送到 /portal/index.php 来触发适当的路由以进行处理。

这对我来说似乎倒退了。有什么建议么?

4

1 回答 1

1

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

RewriteBase /portal/

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

于 2013-02-16T19:36:53.920 回答