2

我在打开子目录时遇到问题。我在服务器的根目录中安装了 Opencart。我还有一些其他子目录,其中包含脚本和页面等其他内容。当我尝试打开它们时,我得到了自定义的 404 Opencart 页面。即使我直接指向 url/subdirectory/index.php 左右。

4

1 回答 1

2

这是因为.htaccess文件中的最后一个重写规则:

RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

- 它将任何不包含问号 ( ?) 的 URL 重定向到该 OpenCart 路由器,该路由器无法路由 URL 并落入 404 默认页面。

为了使您的案例起作用,您必须添加RewriteCond并测试该路径是否不包含子目录的名称。

例如,您想在 中运行脚本/<OC_ROOT>/my_subdirectory/...,添加以下条件:

RewriteCond %{REQUEST_URI} !(my_subdirectory)\/.*

如果它是另一个your_subdirand his_subdir,你可以添加这个条件:

RewriteCond %{REQUEST_URI} !(my_subdirectory|your_subdir|his_subdir)\/.*

确保最后一条规则在此条件之后:

RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteRule ^download/(.*) /index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteCond %{REQUEST_URI} !(my_subdirectory|your_subdir|his_subdir)\/.* # <- OUR NEW COND
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

我没有测试条件,因此希望它会起作用。

于 2013-05-10T08:36:20.747 回答