早上好!我的网站目前的结构如下:
我对宇宙的理解是,如果我导航到门户网站,(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进行处理。
这似乎是我的倒退。有什么建议吗?
答案 0 :(得分:1)
我认为您的问题在于您在门户网站访问文件中遗漏了RewriteBase
:
RewriteBase /portal/
我不是超文本访问天才,所以我无法解释当你把它留下时会发生什么。但我确信这是解决方案。